Mamy następujący fragment kodu (pomysł na ten kod został znaleziony na tej stronie), który odrodzi nowe wątki dla metody "Do_SomeWork()". Dzięki temu możemy wielokrotnie uruchamiać tę metodę asynchronicznie.C# Metoda wykonywania (z parametrami) z ThreadPool
Kod jest:
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();
jednak chcielibyśmy skorzystać z puli wątków zamiast tworzyć własne nowe wątki, które mogą być szkodliwe dla wydajności. Pytanie brzmi, w jaki sposób możemy zmodyfikować powyższy kod, aby skorzystać z ThreadPool, pamiętając, że metoda "Do_SomeWork" przyjmuje wiele parametrów, a także ma typ zwracany (tj. Metoda nie jest nieważna).
Ponadto jest to C# 2.0.
samą myśl, że jeśli jej naprawdę fajne uruchomić swoje metody na wywołanie zwrotne podczas mijania pustych obiektów/tasksInfo – electricalbah