Я вважаю, що модель подій .NET така, що я часто буду піднімати подію в одному потоці та слухати її в іншому. Мені було цікаво, який найчистіший спосіб перенести подію з фонового потоку на мій інтерфейс користувача.
На основі пропозицій спільноти я використав це:
// 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
}