У нас есть следующий фрагмент кода (идея этого кода была найдена на этом веб-сайте), который породит новые потоки для метода «Do_SomeWork()». Это позволяет нам запускать метод несколько раз асинхронно.Метод выполнения C# (с параметрами) с ThreadPool
Код:
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.
Просто думать, если его действительно что здорово запускать ваши методы обратного вызова во время прохождения неопределенных объектов/tasksInfo – electricalbah