У нас есть следующий фрагмент кода (идея для этого кода была найдена на этом сайте), который создаст новые темы для метода "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 принимает несколько параметров, а также имеет тип возвращаемого значения (то есть метод не является пустым).
Кроме того, это C # 2.0.