.NETイベントモデルは、あるスレッドでイベントを発生させ、別のスレッドでリッスンすることが多いようです。バックグラウンドスレッドからUIスレッドにイベントをマーシャリングする最もクリーンな方法は何ですか?クロススレッドイベントを呼び出す最もクリーンな方法
コミュニティの提案に基づいて、私はこれを使用しました:私は冗長デリゲートの宣言を避ける
// 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
}
既存の管理対象のコントロールに管理対象ハンドルがまだない場合、InvokeRequiredがfalseを返す可能性があることに注意してください。コントロールが完全に作成される前に発生するイベントには注意を払う必要があります。 – GregC