Puede agregar este método de extensión que utilizo regularmente (similar en la técnica a la respuesta de @ JaredPar):
/// <summary>
/// Extension method that allows for automatic anonymous method invocation.
/// </summary>
public static void Invoke(this Control c, MethodInvoker mi)
{
c.Invoke(mi);
return;
}
entonces usted puede utilizar en cualquier control (o derivados) de forma nativa en su código a través de:
// "this" is any control (commonly the form itself in my apps)
this.Invoke(() => label.Text = "Some Text");
también puede ejecutar múltiples métodos con los métodos que pasa en el anonimato:
this.Invoke
(
() =>
{
// all processed in a single call to the UI thread
label.Text = "Some Text";
progressBar.Value = 5;
}
);
Tenga en cuenta que si sus hilos intentan Invocar en un control que está dispuesto, obtendrá una excepción ObjectExposedException. Esto sucede si un hilo aún no abortado por la aplicación se está cerrando. Puede "comer" la ObjectDisposedException rodeando su llamada a Invoke(), o puede "comer" la excepción en la extensión del método Invoke().
Supongo que quiere decir que le están lanzando una excepción porque intenta establecer la propiedad Texto de la etiqueta desde otra secuencia. – zebrabox
Sí :(Está bastante ordenado ahora. – Lawrence