2009-09-04 83 views
2

可能重复:
C# Threading/Lock confusion等待所有工作线程结束

我有以下问题:我有监控级别,这是运行它自己的线程,从队列中写道:到文件中(所以主应用程序不必在IO上等待)。但是,当主应用程序线程结束时(控制流在最后一行之后运行),监视器线程也会结束,即使它仍在运行(完整队列)。

有没有办法,不修改主线程等待工作线程完成? C#。

编辑:我不能修改主线程。我使用给定的API(包含我应该写什么,从配置中读取什么的静态方法)只写'支持'代码,没有办法改变线程,主应用程序不能取决于我的代码。

回答

1

切换它们。让你的主线程成为监视器的主线程,并从那里产生工作线程(从Q写入文件)。

,或对显示器和工作在主线程启动线程,然后让主线程自旋并等待(循环,直到它从其他线程中止/完整通知)

1

可以使用的ManualResetEvent和呼叫WaitOne()在主执行线程的末尾。当完成工作线程时,只需发出ManualResetEvent信号,它将继续执行主线程。