私の GUI コードでは、次のように書くことがよくあります。
private void SecondTimer_Elapsed(object sender, ElapsedEventArgs e)
{
if (progressBar1.InvokeRequired)
{
progressBar1.BeginInvoke(new ElapsedEventHandler(SecondTimer_Elapsed), new[] {sender, e});
return;
}
//Code goes here
}
もちろん、最初にコントロールを作成したスレッドをマーシャリングする必要があるため、アプリがマルチスレッドの場合はこれが必要です。問題は、デリゲートを記述して引数を配列に入れるのは面倒な場合があり、そのようなすべてのイベント ハンドラーの上部でスペースを占有することです。このコードを置き換える属性またはそれらの行に沿ったものはありますか? 基本的に、「間違ったスレッドにいる場合は、同じ引数で GUI スレッドにもう一度電話してください」というラベルです。