c# – 我的方法中有多少个线程?

我一直在网上搜索这个答案,但从那时起我找不到真正有用的东西.

我有一个正在运行的程序,我想计算在给定时间我的方法中有多少个线程.

我的Main()函数中有代码:

Parallel.Invoke(MyMethod,MyMethod,MyMethod,MyMethod);


private static void MyMethod()
{
    //how many threads are waiting here???  <--- this is what I am after
    lock (myObj)
    {
        //one thread at a time please
    }
}

谁能在这里光明?

最佳答案
无法直接查询给定函数中有多少个线程.唯一的方法是进行手动跟踪

private static int s_threadCount;

private static void MyMethod() {
  Interlocked.Increment(ref s_threadCount);
  try {
    ...
  } finally {
    Interlocked.Decrement(ref s_threadCount);
  }
}

注意:如果可以递归地输入此方法,则这将无法准确计算线程数,而是计算线程数,它们递归进入函数的次数.

转载注明原文:c# – 我的方法中有多少个线程? - 代码日志