Me parece que el modelo de eventos .NET es tal que a menudo plantearé un evento en un hilo y lo escucharé en otro hilo. Me preguntaba cuál es la forma más limpia de ordenar un evento desde un hilo de fondo en mi hilo de interfaz de usuario.Manera más limpia de invocar sucesos cruzados
Sobre la base de las sugerencias de la comunidad, he utilizado esto:
// earlier in the code
mCoolObject.CoolEvent+=
new CoolObjectEventHandler(mCoolObject_CoolEvent);
// then
private void mCoolObject_CoolEvent(object sender, CoolObjectEventArgs args)
{
if (InvokeRequired)
{
CoolObjectEventHandler cb =
new CoolObjectEventHandler(
mCoolObject_CoolEvent);
Invoke(cb, new object[] { sender, args });
return;
}
// do the dirty work of my method here
}
Tenga en cuenta que InvokeRequired puede devolver false cuando un Control administrado existente aún no tiene un controlador no administrado. Debe tener precaución en los eventos que se plantearán antes de que se haya creado el control por completo. – GregC