确定方法使用的线程数

本文关键字:线程 方法 | 更新日期: 2023-09-27 18:18:15

我有一个方法,看起来有点像这样:

public void DoLotsOfWork()
{
   Task.Factory.StartNew(() => SomeMethod1());
   Task.Factory.StartNew(() => SomeMethod2());
   Task.Factory.StartNew(() => SomeMethod3());    
}

这些任务依次调用其他方法,一些使用Parallel.Invoke,一些创建其他Tasks。有没有办法知道当这个方法运行时有多少并发线程在运行?

确定方法使用的线程数

我过去使用的一种快速方法是在父类中创建一个整数变量或属性,并拥有您的SomeMethod1,2 &包括一个调用Interlocked.Increment(intProperty);在开始,并在最后的块调用interlocked . dec递减(intProperty)。您可以使用该属性来检查当前正在运行的线程数。

你的类看起来像这样:

public class MyThreadingClass
{
   int threadCount = 0;
   public void DoLotsOfWork()
   {
      Task.Factory.StartNew(() => SomeMethod());
   }
   public void SomeMethod()
   {
      Interlocked.Increment(threadCount);
      try
      {
         // Some Code
      }
      finally
      {
         Interlocked.Decrement(threadCount);
      }
   }
}