我可以等待特定的後臺線程完成,然後另一個後臺線程啓動嗎?我可以等待一個特定的後臺線程完成,然後另一個後臺線程啓動?
回答
是的。
如果您提供更多信息,我們可以在答案中提供更多詳細信息。
通常,您建立一個通信系統(消息隊列,事件或委託),用於表示進程/步驟/線程已完成。發生這種情況時,請啓動下一個線程。
+1船長明顯。 =) – 2010-10-13 16:44:30
當然。讓第一個線程啓動第二個線程,或設置某種標誌告訴主機應用程序啓動第二個線程。當然,我必須問:如果這些線程總是按順序運行,爲什麼創建第二個線程而不是在第一個線程中執行所有工作?
「爲什麼要創建第二個線程」 - 這通常是正確的,除非第二個線程在第一個線程完成之前可以執行一些*處理。有時候,你可以做一半的工作,但需要等待結果等等。 – 2010-10-13 16:50:12
在.NET 4中,您可以用任務而不是線程,然後使用延續到實現自己的目標:
var firstTask = Task.Factory.StartNew(() => PerformSomeLongRunningAction(););
var secondTask = firstTask.ContinueWith(t => PerformSecondAction(););
在.NET < = 3.5,該選項會有所不同。最好的方法是使用WaitHandle來表示你的第二項任務。第一個後臺線程需要將信號等待句柄它完成時:
var mre = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(o =>
{
PerformSomeLongRunningAction();
mre.Set(); // Signal to second thread that it can continue
});
ThreadPool.QueueUserWorkItem(o =>
{
mre.WaitOne(); // Wait for first thread to finish
PerformSecondAction();
});
我剛剛學到了一些東西;今天不會是一個完全的浪費! – 2010-10-13 16:48:46
@David:很高興聽到;) – 2010-10-13 16:49:28
是創建的任務運行在一個單獨的線程?看起來這可能只是圍繞'Thread'的一個更友好的包裝。 – 2010-10-13 16:50:49
- 1. 請等待後臺線程?
- 2. 如何讓UI線程等待後臺線程完成?
- 3. 有一個線程啓動另一個線程,然後死
- 4. 等待多個後臺線程
- 5. 等待所有線程完成一份工作,然後再做另一個
- 6. jquery:等待腳本完成,然後再啓動另一個
- 7. 好吧,從其他後臺線程啓動後臺線程? (NSObj)
- 8. 在後臺實現一個塊,然後在完成後在主線程上運行另一個塊?
- 9. Perl:等待後臺進程完成
- 10. 如何讓EDT等待後臺線程?
- 11. 爲什麼在後臺線程不會等待任務完成?
- 12. 如何等待所有後臺線程完成(在C#中)?
- 13. 製作後臺線程等待,直到其他後臺線程獲取iphone
- 14. 如何使線程等到另一個線程完成啓動
- 15. C#生成新線程,然後等待
- 16. 等待函數完成後再繼續主(一個線程)
- 17. 的Java:一個後臺線程
- 18. UI線程如何等待直到後臺線程完成處理?
- 19. 後臺線程
- 20. 後臺線程
- 21. 主線程不會等待另一個線程完成執行
- 22. 如何等待線程直到另一個線程完成
- 23. 等到一個後臺工作者完成沒有鎖定主線程
- 24. 如何讓一個線程等待另一個線程的一部分完成?
- 25. 在後臺線程中運行並有一個完成塊?
- 26. Ruby多個後臺線程
- 27. 主線程正在等待更新接口的後臺線程
- 28. 在google appengine後臺運行只有一個後臺線程
- 29. 我如何等待後臺線程的結果,然後再顯示它?
- 30. 等待另一個線程
你應該接受一些你的答案 - 它會讓人更快樂,以回覆您的問題。 – 2010-10-13 16:43:56