创建任务

using System;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;

namespace Test
{
    class Program
    {
        /// <summary>
        /// 创建和执行任务
        /// </summary>
        static void Main()
        {
            CurrentThreadInfo("主线程Main()的");

            var t1 = new Task(() => TaskMethod("task11"));
            t1.Start();


            //Task.Run()方式是Task.Factory.StartNew()的快捷方式,它没有附加的选项。
            Task.Run(() => TaskMethod("task22"));


            //Task.Factory.StartNew(() => TaskMethod("task33"));
            Task.Factory.StartNew(() => { TaskMethod("task33"); });


            //LongRunning:标记该任务为长时间运行,结果该任务不会使用线程池。
            Task.Factory.StartNew(() => { TaskMethod("task44"); }, TaskCreationOptions.LongRunning);


            Console.WriteLine("执行完成");
            Console.ReadLine();
        }


        private static void TaskMethod(string name)
        {
            Console.WriteLine("任务名称:{0} , {1}", name, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

            CurrentThreadInfo(name);
        }


        /// <summary>
        /// 当前线程信息
        /// </summary>
        private static void CurrentThreadInfo(string name)
        {
            StringBuilder builder = new StringBuilder();
            builder.AppendLine("");
            builder.AppendLine(String.Format("{0}线程Id:\t\t{1}", name, Thread.CurrentThread.ManagedThreadId));
            builder.AppendLine(String.Format("{0}是否使用线程池:\t{1}", name, Thread.CurrentThread.IsThreadPoolThread));
            builder.AppendLine(String.Format("{0}是否后台线程:\t{1}", name, Thread.CurrentThread.IsBackground));
            builder.AppendLine(String.Format("{0}线程状态:\t\t{1}", name, Thread.CurrentThread.ThreadState.ToString()));
            builder.AppendLine(String.Format("{0}当前时间:\t\t{1}", name, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            builder.AppendLine("");

            Console.WriteLine(builder.ToString());
        }
    }
}

 

打印运行结果:

/*

主线程Main()的线程Id:           10
主线程Main()的是否使用线程池:    False
主线程Main()的是否后台线程:      False
主线程Main()的线程状态:         Running
主线程Main()的当前时间:         2016-08-17 12:03:34


执行完成
任务名称:task11 , 2016-08-17 12:03:34
任务名称:task33 , 2016-08-17 12:03:34
任务名称:task44 , 2016-08-17 12:03:34

task44线程Id:           14
task44是否使用线程池:    False
task44是否后台线程:      True
task44线程状态:         Background
task44当前时间:         2016-08-17 12:03:34


task33线程Id:           12
task33是否使用线程池:    True
task33是否后台线程:      True
task33线程状态:         Background
task33当前时间:         2016-08-17 12:03:34


任务名称:task22 , 2016-08-17 12:03:34

task11线程Id:           13
task11是否使用线程池:    True
task11是否后台线程:      True
task11线程状态:         Background
task11当前时间:         2016-08-17 12:03:34


task22线程Id:           11
task22是否使用线程池:    True
task22是否后台线程:      True
task22线程状态:         Background
task22当前时间:         2016-08-17 12:03:34
 
*/

 

posted @ 2016-08-16 17:43  茗::流  阅读(116)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。