关于Task的使用,一直都是半知半解,最近终于有时间详细的看了一遍MSDN,作为备忘录,将心得也记录下来和大家分享。

首先,根据MSDN的描述,Task是FrameWork4引进的新功能,他和ConCurrent命名空间一起被引进,用来替代Thread的使用。

根据我的使用,个人觉得,他确实比Thead的功能要丰富一些。

先一个最简单的例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace TaskConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            //当前线程标识
            Console.WriteLine(Thread.CurrentThread.GetHashCode());

            Task task = new Task(run);
            Console.WriteLine("任务标识:" + task.GetHashCode() + ",状态:" + task.Status);//状态 
            task.Start();
            Console.WriteLine("任务标识:" + task.GetHashCode() + ",状态:" + task.Status);//状态

            //任务完成后执行新任务
            Action<Task> ation = new Action<Task>(taskStart);
            task.ContinueWith(ation);


            Console.Read();
        }

        public static void taskStart(Task task)
        {
            task = new Task(run);
            task.Start();
            //如果注释上面两句话,则任务标识为 task.ContinueWith(ation)中task的任务
            Console.WriteLine("任务标识:" + task.GetHashCode() + ",状态:" + task.Status + ",当前线程:" + Thread.CurrentThread.GetHashCode());//状态
             
        }


        public static void run()
        { 
            Console.WriteLine("this is run");
        }
    }
}
View Code

相关文章: