确定方法使用的线程数
本文关键字:线程 方法 | 更新日期: 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);
}
}
}