我有點困惑,應該如何實現多個異步任務的工作流程。例如 - 任務1開始,任務1完成,任務2開始,任務2完成時開始任務N等。
或者另一個詞 - 異步任務如何通知「父母」任務有關他的狀態?我想可以在這裏使用TaskStatus
,但不知道具體如何。 我在MSDN上搜索過,但沒有這種模式的完整例子。
P.S.我編輯我的問題,以專注於一個具體問題。異步模式 - 上一個任務完成時運行任務
2
A
回答
5
如果你真的想迫不及待地開始TASK2直到TASK1完成後,一個辦法是這樣的:
Task<string> task1 = GetUsername();
string username = await task1; // blocks(or "waits") here until GetUsername returns
Task<string> task2 = GetConfig(username); // since we have the return from above, we can pass it here
string config = await task2 ; // blocks here until GetConfig returns
注意,在這個任務1和Task2在彼此平行不執行,因爲我們明確地按照您的要求,等待一個完成後再開始另一個。雖然它們與調用它們的線程相比是異步的。
如果你有一個List<Task>
並希望順序執行它們,那麼這種方法會有所不同,並行執行它們將是一種不同的方法。
如果你看看周圍的計算器,你會看到很多使用Wait,WaitAll,WhenAll等方法的例子,這些方法可以讓你做很多不同組合的事情。
+0
是的,我真的需要等到前一個任務完成,因爲它將一些ID傳遞給需要下一個任務的數據庫。 –
相關問題
- 1. 異步任務從api的異步任務不運行異步
- 2. TextView上的setText異步任務完成
- 3. 在完成異步任務之前完成Jake任務
- 4. 等待任務運行? /任務完成時跳轉下一行?
- 5. ContinueWith任務完成前任務運行
- 6. 等待多個異步任務完成
- 7. 異步任務花費很長時間才能完成任務
- 8. 咕嚕 - 排隊任務前一個任務後運行完成
- 9. 創建一個完成後運行任務的任務計劃
- 10. 只有在異步任務完成後才需要運行任務
- 11. 完成兩個異步任務時的執行方法
- 12. 執行回調一次每個異步任務完成forEach
- 13. 運行多個C#任務異步
- 14. 等待異步任務完成
- 15. 等待異步咕嚕任務完成
- 16. Phonegap等待異步任務完成
- 17. 等到課程完成異步任務
- 18. Android Expresso - 等待異步任務完成
- 19. 春天,當異步任務完成
- 20. 異步任務完成之前返回
- 21. Angular-等待異步任務完成
- 22. 如何讓Grunt在運行另一個任務之前等待任務完成?
- 23. Gulp:異步任務完成後運行代碼
- 24. Android異步任務等待其他任務完成
- 25. 當任務列表完成時運行任務
- 26. Spring MVC異步任務同步運行
- 27. 等待異步任務操作完成,並繼續當前的異步任務
- 28. 異步任務vs任務
- 29. 如何在Node中完成第一個異步並行任務完成?
- 30. 一個異步任務問題形式
我沒有downvote,但你已經問了幾件事情可能是他們自己的問題,因爲每個都需要一個相當深入的答案。並行執行若干任務:http://stackoverflow.com/q/12337671/84206異常處理:http://msdn.microsoft.com/en-us/library/dd537614(v=vs.110).aspx有很多其他變化:http://stackoverflow.com/questions/tagged/async-await – AaronLS