代码之家  ›  专栏  ›  技术社区  ›  nothrow

等待所有工作线程结束[重复]

  •  2
  • nothrow  · 技术社区  · 15 年前

    可能重复:
    C# Threading/Lock confusion

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

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

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

    2 回复  |  直到 8 年前
        1
  •  1
  •   StingyJack    15 年前

    把他们调换一下。使主线程成为监视线程,并从那里生成工作线程(从Q写入文件)。

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

        2
  •  1
  •   gregwhitaker    15 年前

    您可以使用ManualResetEvent并在主执行线程结束时调用WaitOne()。当工作线程完成时,只需向ManualResetEvent发出信号,它就会继续执行主线程。

    推荐文章