Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从另一个线程监视C#线程_C#_.net_Wpf_Threadpool_Terminate - Fatal编程技术网

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

如何从另一个线程监视C#线程,c#,.net,wpf,threadpool,terminate,C#,.net,Wpf,Threadpool,Terminate,我在WPF应用程序的线程池中运行了几个线程。我需要监视它们,可能是从另一个线程,以查明是否所有这些线程都已终止。 我怎样才能做到这一点 为了简单起见,我的使用场景是: 点击按钮 在线程池中启动多个线程 启动另一个线程以监视线程池中的线程 锁定WPF应用程序的UI 当步骤3中的线程设置全局值以指示在(2)中启动的线程已终止时,释放锁 将线程池中的所有线程放在一个数组中。当您要等待池线程退出时,请使用WaitHandle.WaitAll等待线程完成。当前的问题实际上过于本地化。我不得不采用一种特殊的

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

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

  • 点击按钮
  • 在线程池中启动多个线程
  • 启动另一个线程以监视线程池中的线程
  • 锁定WPF应用程序的UI
  • 当步骤3中的线程设置全局值以指示在(2)中启动的线程已终止时,释放锁
    将线程池中的所有线程放在一个数组中。当您要等待池线程退出时,请使用
    WaitHandle.WaitAll
    等待线程完成。

    当前的问题实际上过于本地化。我不得不采用一种特殊的方法来适应最初有缺陷的设计


    我的方法是只要在线程启动时增加一个计数器,在线程终止时减少计数器的值。为了监视计数器的值,我启动了另一个线程来监视计数器的值。可能不是一种优雅的方法,但似乎效果不错。

    @Henk Hoterman:我认为他会编写自己的线程池,因为他想控制线程。如果使用内置池,那么整个想法是有缺陷的。尽管标题非常不同,但可能重复。这是关于相同的问题,并且有一个解决方案。