【发布时间】:2010-04-19 23:41:46
【问题描述】:
我们有以下代码(此代码的想法可在此网站上找到),它将为“Do_SomeWork()”方法生成新线程。这使我们能够多次异步运行该方法。
代码是:
var numThreads = 20;
var toProcess = numThreads;
var resetEvent = new ManualResetEvent(false);
for (var i = 0; i < numThreads; i++)
{
new Thread(delegate()
{
Do_SomeWork(Parameter1, Parameter2, Parameter3);
if (Interlocked.Decrement(ref toProcess) == 0) resetEvent.Set();
}).Start();
}
resetEvent.WaitOne();
但是,我们希望使用 ThreadPool 而不是创建我们自己的新线程,这可能会损害性能。问题是我们如何修改上面的代码以利用 ThreadPool 记住方法“Do_SomeWork”接受多个参数并且还具有返回类型(即方法不是 void)。
另外,这是 C# 2.0。
【问题讨论】:
标签: c# multithreading parameters threadpool