等待所有工作线程结束
问题描述:
我有以下问题:我有监控级别,这是运行它自己的线程,从队列中写道:到文件中(所以主应用程序不必在IO上等待)。但是,当主应用程序线程结束时(控制流在最后一行之后运行),监视器线程也会结束,即使它仍在运行(完整队列)。
有没有办法,不修改主线程等待工作线程完成? C#。
编辑:我不能修改主线程。我使用给定的API(包含我应该写什么,从配置中读取什么的静态方法)只写'支持'代码,没有办法改变线程,主应用程序不能取决于我的代码。
答
切换它们。让你的主线程成为监视器的主线程,并从那里产生工作线程(从Q写入文件)。
,或对显示器和工作在主线程启动线程,然后让主线程自旋并等待(循环,直到它从其他线程中止/完整通知)
答
可以使用的ManualResetEvent和呼叫WaitOne()在主执行线程的末尾。当完成工作线程时,只需发出ManualResetEvent信号,它将继续执行主线程。