如何从另一个线程监视C#线程

时间:2011-07-21 11:10:02

标签: c# .net wpf threadpool terminate

我在WPF应用程序的ThreadPool中运行了几个Threads。我需要监视它们,可能来自另一个Thread,以查明是否所有这些线程都已终止。 我怎样才能实现这一目标。

为简单起见,我的使用场景是:

  1. 点击按钮
  2. 在ThreadPool中启动多个线程。
  3. 启动另一个线程来监视ThreadPool中的那些
  4. 锁定WPF应用程序的UI。
  5. 当步骤3中的线程设置全局值以指示在(2)中启动的线程已终止时,释放锁定。

2 个答案:

答案 0 :(得分:1)

将线程池中的所有线程放在一个数组中。如果要等待池线程退出,请使用WaitHandle.WaitAll等待线程完成。

答案 1 :(得分:0)

手头的问题实际上太局部了。我不得不采用Ad Hoc方法来适应最初的有缺陷的设计。

我的方法是在线程启动时简单地增加一个计数器,并在线程终止时减少计数器的值。为了监视计数器的值,我启动了另一个Thread来监视计数器的值。也许不是一个优雅的方法,但似乎工作正常。