C Task的使用 連續的任務

2022-09-17 03:21:16 字數 1774 閱讀 6716

通過任務,可以指定在任務完成之後,應開始執行之後另乙個特定任務。例如,乙個使用前乙個任務的結果的新任務,如果前乙個任務失敗了,這個任務就應執行一些清理工作。任務處理程式都不帶引數或者帶乙個物件引數,而任務的連續處理方法都有乙個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...