Ich finde, dass das .NET-Ereignismodell so ist, dass ich häufig ein Ereignis in einem Thread auslöse und es in einem anderen Thread abhöre. Ich habe mich gefragt, wie ich ein Ereignis am saubersten von einem Hintergrund-Thread auf meinen UI-Thread übertragen kann.
Basierend auf den Community-Vorschlägen habe ich Folgendes verwendet:
// 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
}