2009-09-04 125 views
2

可能重複:
C# Threading/Lock confusion等待所有工作線程結束

我有以下問題:我有監控級別,這是運行它自己的線程,從隊列中寫道:到文件中(所以主應用程序不必在IO上等待)。但是,當主應用程序線程結束時(控制流在最後一行之後運行),監視器線程也會結束,即使它仍在運行(完整隊列)。

有沒有辦法,不修改主線程等待工作線程完成? C#。

編輯:我不能修改主線程。我使用給定的API(包含我應該寫什麼,從配置中讀取什麼的靜態方法)只寫'支持'代碼,沒有辦法改變線程,主應用程序不能取決於我的代碼。

回答

1

切換它們。讓你的主線程成爲監視器的主線程,並從那裏產生工作線程(從Q寫入文件)。

,或對顯示器和工作在主線程啓動線程,然後讓主線程自旋並等待(循環,直到它從其他線程中止/完整通知)

1

可以使用的ManualResetEvent和呼叫WaitOne()在主執行線程的末尾。當完成工作線程時,只需發出ManualResetEvent信號,它將繼續執行主線程。