Estoy modificando una aplicación escrita en C# que hace un uso intensivo de multi-threading para reproducir archivos de audio y mostrar imágenes a un usuario. Dado que tiene múltiples subprocesos, necesito usar el método Invoke a menudo para cambiar los elementos del formulario. Me encuentro con un patrón con el que no me siento cómodo, en el que me encuentro escribiendo métodos frecuentes, pequeños y delegados que generalmente solo hacen una cosa. Un ejemplo de esto es la siguiente:¿Qué se considera una buena práctica de programación en aplicaciones winform de subprocesos múltiples con uso de delegado?
delegate void setImageCallback(Image img);
private void setImage(Image img)
{
this.pictureBox1.Image = img;
}
private void someOtherMethod()
{
...
if (this.pictureBox1.InvokeRequired)
{
this.Invoke(new setImageCallback(setImage), Image.FromFile("example.png");
}
else
{
this.pictureBox1.Image = Image.FromFile("example.png");
}
...
}
¿Cómo la gente en general manejar estas situaciones, por lo que no se encuentra escribiendo un absurdo número de delegados y métodos sólo para seguir siendo seguro para subprocesos? Obviamente, la consolidación de métodos similares es excelente, pero si potencialmente necesito actualizar cada elemento del formulario en mi formulario, no quiero tener un delegado y método de "modificación" para cada uno de estos.
Gracias.
http://stackoverflow.com/questions/2367718/c-automating-the-invokerequired-code- patrón/2367888 # 2367888 –