通過任務,可以指定在任務完成之後,應開始執行之後另乙個特定任務。例如,乙個使用前乙個任務的結果的新任務,如果前乙個任務失敗了,這個任務就應執行一些清理工作。任務處理程式都不帶引數或者帶乙個物件引數,而任務的連續處理方法都有乙個task型別的引數,這裡可以訪問起始任務的相關資訊:
如下面的示例**:
using system;
2:using system.collections.generic;
3:using system.linq;
4:using system.text;
5:using system.threading;
6:using system.threading.tasks;
7:namespace tasksamples
8: ",task.currentid);
15: thread.sleep(3000);
16: }
17:
18:static
void doonsecond(task t)
19: finished",t.id);
21: console.writeline("this task id ", task.currentid);
22: console.writeline("do some cleanup");
23: thread.sleep(3000);
24: }
25:
26:
27:static
void main(string args)
28:
37: }
38: }連續任務通過在任務上呼叫continuewith()方法來定義。也可以使用taskfactory類來定義。t1.continuewith(doonsecond)方法表示,呼叫doonsecond()方法的新任務應在任務t1結束時立即啟動。在乙個任務結束時,可以啟動多個任務,連續任務也可以有另外乙個連續任務。如下面的例子所示:
task t1 = new task(doonfirst);
t1.start();
task t2 = t1.continuewith(doonsecond);
task t3 = t1.continuewith(doonsecond);
task t4 = t2.continuewith(doonsecond);
執行結果如下圖所示:
使用taskcreationoptions列舉中的值,可以指定,連續的任務只有在起始任務成功(或者失敗)結束時啟動。一些可能的值是onlyonfaulted、notonfaulted 、onlyoncanceled、notoncanceled和onlyonrantocompletion。
task t5 = t1.continuewith(doonerror, taskcontinuationoptions.onlyonfaulted);
C Task的使用 任務的結果
任務結束時,它可以把一些有用的狀態資訊寫到共享物件中。這個共享物件必須是執行緒安全的。另乙個選項是使用返回某個結果的任務。使用task類的泛型版本,就可以定義返回某個結果的任務的返回型別。為了返回某個結果任務呼叫的方法可以宣告為帶任意返回型別。示例方法taskwithresult 利用乙個元組返回兩...
C Task的使用 Task的啟動
net 4.0包含的新命名空間system.threading.tasks,它包含的類抽象出了執行緒功能。任務表示應完成的某個單元的工作。這個單元的工作可以在單獨的執行緒中執行,也可以以同步的方式啟動乙個任務,這需要等待主調執行緒。使用任務不僅可以獲得乙個抽象層,還可以對底層執行緒進行許多控制。啟動...
c task新增順序 C 的執行順序
為了搞清.net的執行順序我們做如下準備 1,做3個任務,分別往3個文字檔案寫入100萬行時間戳,每個任務根據計算大概需要400 毫秒。datetime dt1 private void dowork1 for int i 0 i 1000000 i writer.writeline datetim...