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