1.启动任务
class Program { static void Main(string[] args) { //三种启动任务方式 //第一种 TaskFactory tf1 = new TaskFactory(); Task t1 = tf1.StartNew(TaskMethod); //第二种 Task t2 = Task.Factory.StartNew(TaskMethod); //第三种 Task t3 = new Task(TaskMethod); t3.Start(); Console.ReadKey(); } private static void TaskMethod() { Console.WriteLine("Task ID:{0}", Task.CurrentId); } }
2,连续任务
class Program { static void Main(string[] args) { Task t1 = new Task(GetTask); Task t2 = t1.ContinueWith(NewTask); Task t3 = t2.ContinueWith(NewTask2); t1.Start(); Console.ReadKey(); } private static void GetTask() { Console.WriteLine("GetTask:{0}", Task.CurrentId); Thread.Sleep(1000); } private static void NewTask(Task t) { Console.WriteLine("NewTask:{0},pTask:{1}", Task.CurrentId, t.Id); } private static void NewTask2(Task t) { Console.WriteLine("NewTask2:{0},pTask:{1}", Task.CurrentId, t.Id); } }
3,任务的层次结构
class Program { static void Main(string[] args) { a1(); Console.ReadKey(); } private static void a1() { Task t = new Task(a2); Console.WriteLine("a1开始:{0}", t.Status);//a2任务状态:Created(该任务已初始化,但尚未被计划) t.Start(); Console.WriteLine("a1过程:{0}", t.Status);//a2任务状态:WaitingToRun(该任务已被计划执行,但尚未开始执行) Thread.Sleep(3000); Console.WriteLine("a1结束:{0}", t.Status);//a2任务状态:RanToCompletion(成功执行了任务) } private static void a2() { Console.WriteLine("a2:{0}", Task.CurrentId); Task t = new Task(a3); t.Start(); } private static void a3() { Console.WriteLine("a3:{0}", Task.CurrentId); } }
4,任务的结束
class Program { static void Main(string[] args) { Task<string> t = new Task<string>(GetString, "你好"); t.Start(); Console.WriteLine(t.Result); Console.ReadKey(); } private static string GetString(object s) { return s.ToString(); } }
============================续.......................
任务类似于线程
成员名称 | 说明 |
---|---|
Canceled | 该任务已通过对其自身的 CancellationToken 引发 OperationCanceledException 对取消进行了确认,此时该标记处于已发送信号状态;或者在该任务开始执行之前,已向该任务的 CancellationToken 发出了信号。有关详细信息,请参阅任务取消。 |
Created | <?xml:namespace prefix="[default]" xhtml="" ns="http://www.w3.org/1999/xhtml">该任务已初始化,但尚未被计划。?xml:namespace> |
Faulted | 由于未处理异常的原因而完成的任务。 |
RanToCompletion | 已成功完成执行的任务。 |
Running | 该任务正在运行,但尚未完成。 |
WaitingForActivation | 该任务正在等待 .NET Framework 基础结构在内部将其激活并进行计划。 |
WaitingForChildrenToComplete | 该任务已完成执行,正在隐式等待附加的子任务完成。 |
WaitingToRun | 该任务已被计划执行,但尚未开始执行。 |
Task t = new Task(() => { Thread.Sleep(10000); Console.WriteLine("Task:{0}", Task.CurrentId); Console.WriteLine("thread:{0}", Thread.CurrentThread.ManagedThreadId); }); //开始执行任务 t.Start(); //等待任务完成(线程阻塞) t.Wait(); //当处理完成任务之后输出 if (t.Status == TaskStatus.RanToCompletion) Console.WriteLine("Main:{0}", Thread.CurrentThread.ManagedThreadId); Console.ReadKey();
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。