Windows フォームに次のようなコードがあります。
button1_Click(object sender, EventArgs e)
{
Widget myWidget = new Widget(...bunch of constructor parameters...);
myWidget.Property1 = "blah"; // other properties get set here too...
myWidget.InterestingThingHappened += InterestingThingHappened;
Parallel.Invoke(myWidget.RunInterestingLongRunningProcess());
}
private void InterestingThingHappened(object sender, EventArgs e)
{
myLabel.Invoke(new Action(() => myLabel.Text = "An interesting thing happened!"))
}
実行すると、タスク マネージャーで強制終了するまでアプリケーションがフリーズします。次に、「ウィンドウ ハンドルが作成されるまで、Invoke または BeginInvoke をコントロールで呼び出すことはできません」という例外が表示されます。button1_Click
は明らかにコントロール イベント ハンドラーであるため、このコードが実行される前にフォームが完全に作成されます。これが何を意味するのか、まったくわかりません。誰でも助けることができますか?