C# Méthode Execute (avec Paramètres) avec ThreadPool
Nous avons le morceau de code suivant (idée de ce code a été trouvé sur ce site) qui générera de nouvelles discussions pour la méthode "Do_SomeWork()". Cela nous permet d'exécuter la méthode plusieurs fois de manière asynchrone.
Le code est:
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();
Toutefois, nous aimerions faire usage de pool de threads plutôt que de créer notre propre fils qui peut être préjudiciable à la performance. La question est de savoir comment pouvons-nous modifier le code ci-dessus pour rendre l'utilisation de pool de threads en gardant à l'esprit que la méthode "Do_SomeWork" prend plusieurs paramètres et aussi a un type de retour (c'est à dire la méthode n'est pas nulle).
Aussi, c'est le C# 2.0.
OriginalL'auteur washtik | 2010-04-19
Vous devez vous connecter pour publier un commentaire.
Peu de la même manière, mais l'utilisation d'une WaitCallback passé à ThreadPool.QueueUserWorkItem:
OriginalL'auteur Remus Rusanu
Avec C# 2.0, vous appelez
Puis à l'intérieur de la fonction de rappel vous lancez l'objet[] de retour dans le respect des paramètres et types. Concernant le type de retour, si vous utilisez le pool de threads, je ne pense pas que vous serez en mesure d'obtenir la valeur de retour, le rappel doit avoir une signature de
OriginalL'auteur Otávio Décio