.net 4.0包含的新命名空間system.threading.tasks,它包含的類抽象出了執行緒功能。任務表示應完成的某個單元的工作。這個單元的工作可以在單獨的執行緒中執行,也可以以同步的方式啟動乙個任務,這需要等待主調執行緒。使用任務不僅可以獲得乙個抽象層,還可以對底層執行緒進行許多控制。
啟動任務
1)、使用taskfactory類的例項,在其中把taskmethod()方法傳遞給startnew方法,就會立即啟動任務。
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: }
16:
17: static void main(string args)
18:
24: }
25: }執行結果如下所示:
2)、使用task類的factory屬性,task.factory返回taskfactory的預設例項。在其中把taskmethod()方法傳遞給startnew方法。這種方法實際和第一種方法是一樣的。
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);
16:
17:
15: }
18: static void main(string args)
19:
25: }
26: }3)、使用task類的例項,然後呼叫start方法啟動任務。執行結果和上面兩種方式相同。在使用task類時,除了呼叫start()方法,還可以呼叫runsynchronously()方法。這樣任務也會啟動,但在呼叫者的當前執行緒中,它正在執行的時候,呼叫者需要一直等待到該任務結束。預設情況下,任務是非同步執行的。
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: }
16:
17: static void main(string args)
18:
24: }
25: }
2: t3.start();
C Task的使用 任務的結果
任務結束時,它可以把一些有用的狀態資訊寫到共享物件中。這個共享物件必須是執行緒安全的。另乙個選項是使用返回某個結果的任務。使用task類的泛型版本,就可以定義返回某個結果的任務的返回型別。為了返回某個結果任務呼叫的方法可以宣告為帶任意返回型別。示例方法taskwithresult 利用乙個元組返回兩...
C Task的使用 連續的任務
通過任務,可以指定在任務完成之後,應開始執行之後另乙個特定任務。例如,乙個使用前乙個任務的結果的新任務,如果前乙個任務失敗了,這個任務就應執行一些清理工作。任務處理程式都不帶引數或者帶乙個物件引數,而任務的連續處理方法都有乙個task型別的引數,這裡可以訪問起始任務的相關資訊 如下面的示例 usin...
Task中啟動task的風險分析
序 這兩天遇到乙個task中引數傳遞錯誤的問題,折騰了一天多,總算找到原因了,記錄之。設計思維 maintask是程式的主task,在 maintask 中重新建立新的task,呼叫關係 maintask 實際引數 位址 資訊 param 0x12a154 0x0 void taskastart i...