C Task的使用 Task的啟動

2022-03-06 19:19:10 字數 2046 閱讀 9048

.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...