我们有以下的一段代码(灵感来自于这个网站),它将为方法“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。