您好,登錄后才能下訂單哦!
1.啟動任務(wù)
class Program { static void Main(string[] args) { //三種啟動任務(wù)方式 //第一種 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,連續(xù)任務(wù)
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,任務(wù)的層次結(jié)構(gòu)
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任務(wù)狀態(tài):Created(該任務(wù)已初始化,但尚未被計劃) t.Start(); Console.WriteLine("a1過程:{0}", t.Status);//a2任務(wù)狀態(tài):WaitingToRun(該任務(wù)已被計劃執(zhí)行,但尚未開始執(zhí)行) Thread.Sleep(3000); Console.WriteLine("a1結(jié)束:{0}", t.Status);//a2任務(wù)狀態(tài):RanToCompletion(成功執(zhí)行了任務(wù)) } 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,任務(wù)的結(jié)束
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(); } }
============================續(xù).......................
任務(wù)類似于線程
成員名稱 | 說明 |
---|---|
Canceled | 該任務(wù)已通過對其自身的 CancellationToken 引發(fā) OperationCanceledException 對取消進(jìn)行了確認(rèn),此時該標(biāo)記處于已發(fā)送信號狀態(tài);或者在該任務(wù)開始執(zhí)行之前,已向該任務(wù)的 CancellationToken 發(fā)出了信號。有關(guān)詳細(xì)信息,請參閱任務(wù)取消。 |
Created | <?xml:namespace prefix="[default]" xhtml="" ns="http://www.w3.org/1999/xhtml">該任務(wù)已初始化,但尚未被計劃。?xml:namespace> |
Faulted | 由于未處理異常的原因而完成的任務(wù)。 |
RanToCompletion | 已成功完成執(zhí)行的任務(wù)。 |
Running | 該任務(wù)正在運(yùn)行,但尚未完成。 |
WaitingForActivation | 該任務(wù)正在等待 .NET Framework 基礎(chǔ)結(jié)構(gòu)在內(nèi)部將其激活并進(jìn)行計劃。 |
WaitingForChildrenToComplete | 該任務(wù)已完成執(zhí)行,正在隱式等待附加的子任務(wù)完成。 |
WaitingToRun | 該任務(wù)已被計劃執(zhí)行,但尚未開始執(zhí)行。 |
Task t = new Task(() => { Thread.Sleep(10000); Console.WriteLine("Task:{0}", Task.CurrentId); Console.WriteLine("thread:{0}", Thread.CurrentThread.ManagedThreadId); }); //開始執(zhí)行任務(wù) t.Start(); //等待任務(wù)完成(線程阻塞) t.Wait(); //當(dāng)處理完成任務(wù)之后輸出 if (t.Status == TaskStatus.RanToCompletion) Console.WriteLine("Main:{0}", Thread.CurrentThread.ManagedThreadId); Console.ReadKey();
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。