ThreadPool.QueueUserWorkItem avec une lambda expression et de la méthode anonyme

En passant par deux paramètres à un nouveau sujet sur le pool de threads peut parfois être compliqué, mais il semble qu'avec les expressions lambda et les méthodes anonymes, je peux le faire:

public class TestClass
{
    public void DoWork(string s1, string s2)
    {
        Console.WriteLine(s1);
        Console.WriteLine(s2);
    }
}

try
{
    TestClass test = new TestClass();
    string s1 = "Hello";
    string s2 = "World";
    ThreadPool.QueueUserWorkItem(
        o => test.DoWork(s1, s2)
        );
}
catch (Exception ex)
{
    //exception logic
}

Maintenant, j'ai certainement simplifié cet exemple, mais ces points sont essentiels:

  • La chaîne objets transmis sont immuables et donc des threads
  • Le s1 et s2 sont les variables déclarées à l'intérieur de la portée du bloc try, qui je le quitter immédiatement après files d'attente le travail pour le pool de threads, de sorte que le s1 et s2 les variables ne sont jamais modifiés par la suite.

Est-il quelque chose de mal avec cela?

L'alternative est de créer une nouvelle classe qui implémente une immuable type avec 3 membres: test, s1 et s2. Qui semble juste comme un travail supplémentaire sans aucun avantage à ce point.

  • Pourquoi ne pas simplement écrire o => test.DoWork(s1, s2) au lieu de la plus prolixe définition?
  • Parce que je suis vraiment nouveau dans les expressions lambda. 😉 merci!
  • Je l'ai changé à la question.