C# Execute-Methode (mit den Parametern) mit ThreadPool
Wir haben die folgenden Stück code (Idee für diesen code wurde auf dieser website gefunden), welche die spawn neue threads für die Methode "Do_SomeWork()". Dies ermöglicht es uns, führen Sie die Methode mehrfach asynchron.
Der code ist:
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();
Jedoch würden wir gerne nutzen, ThreadPool, anstatt unsere eigene neue threads, die kann sich nachteilig auf die Leistung. Die Frage ist, wie können wir ändern Sie den obigen code, um die Verwendung der ThreadPool-im Auge zu behalten, dass die Methode "Do_SomeWork" dauert mehrere Parameter und hat auch einen return-Typ (D. H. Methode nicht void).
Dies ist auch C# 2.0.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ziemlich viel die gleiche Weise, aber verwenden Sie einen WaitCallback übergeben ThreadPool.QueueUserWorkItem:
Mit C# 2.0, rufen Sie
Dann innerhalb des Callbacks die du wirkst, die object[] zurück in die richtigen Parameter und Typen. Über die Rückgabe geben, wenn die Verwendung der ThreadPool-ich glaube nicht, dass Sie in der Lage sein, um den Rückgabewert der callback hat eine Signatur von