等待所有工作线程结束

时间:2009-09-04 11:45:32

标签: c# .net multithreading

  

可能重复:
  C# Threading/Lock confusion

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

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

编辑:我无法修改主线程。我只用给定的API编写了大量应用程序的“支持”代码(一个静态方法包含我应该写的内容,从配置中读取的内容),没有办法改变线程,主应用程序不能依赖于我的代码。

2 个答案:

答案 0 :(得分:1)

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

或者让主线程启动线程用于监视和工作,然后让主线程旋转并等待(循环直到它从其他线程获得中止/完整通知)

答案 1 :(得分:1)

您可以使用ManualResetEvent并在主执行线程的末尾调用WaitOne()。完成工作线程后,只需发出ManualResetEvent信号,它就会继续执行主线程。