关于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"); } } }