我們有以下一段代碼(在這個網站上發現了這段代碼的想法),它將爲方法「Do_SomeWork()」產生新的線程。這使我們能夠異步運行該方法多次。使用ThreadPool的C#執行方法(帶參數)
的代碼是:
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,記住方法「Do_SomeWork」需要多個參數並且還有一個返回類型(即方法不是void)。
此外,這是C#2.0。
只是想,如果它真的很酷運行你的回調方法,同時傳遞null對象/ tasksInfo – electricalbah 2014-03-06 05:40:25