【问题标题】:How to Monitor C# Threads from another Thread如何从另一个线程监视 C# 线程
【发布时间】:2011-07-21 11:10:02
【问题描述】:

我有几个线程在我的 WPF 应用程序的线程池中运行。我需要监视它们,可能来自另一个线程,以了解是否所有这些线程都已终止。 我怎样才能做到这一点。

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

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

【问题讨论】:

标签: c# .net wpf threadpool terminate


【解决方案1】:

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

【讨论】:

  • @Henk Hoterman:我认为他会编写自己的线程池,因为他想控制线程。如果使用内置游泳池,那么整个想法就有缺陷。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    相关资源
    最近更新 更多