ThreadPool.QueueUserWorkItem con una expresión lambda y un método anónimo

Pasar dos parámetros a un nuevo hilo en el conjunto de hilos a veces puede ser complicado, pero parece que con expresiones lambda y métodos anónimos, puedo hacer esto:

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
}

Ahora, ciertamente he simplificado este ejemplo, pero estos puntos son clave:

Los objetos de cadena que se pasan son inmutables y, por lo tanto, seguros para hilos Las variables s1 y s2 se declaran dentro del alcance del bloque try, que salgo inmediatamente después de poner el trabajo en cola en el grupo de subprocesos, por lo que las variables s1 y s2 nunca se modifican después de eso.

¿Hay algo malo con esto

La alternativa es crear una nueva clase que implemente un tipo inmutable con 3 miembros: test, s1 y s2. Eso parece un trabajo extra sin ningún beneficio en este momento.

Respuestas a la pregunta(5)

Su respuesta a la pregunta