私が質問しようとしていることは、現実世界で必要とされていますが、簡単にするために、問題をこれに要約しました。
- C# Windows フォーム アプリケーション プロジェクトを作成する
- フォームにテキストボックスとボタンを追加します。
- テキスト ボックスに Leave イベントを追加します。
- ボタンに Click イベントを追加します。
このコードで
private void textBox1_Leave(object sender, EventArgs e) {
button1.Dispose();
}
private void button1_Click(object sender, EventArgs e) {
MessageBox.Show("in button 1");
}
プロジェクトを実行し、カーソルをテキスト ボックスに置きます。ボタンをクリックして終了します。
テキストボックスを離れると、ボタンが Disposed になりますが、ボタンの Click イベントは、処理されるのを待っているテキストボックスの Leave イベントの後ろに座っています。しかし、テキスト ボックスがなくなったため、ObjectDisposedException が発生します。
だから、....問題は、ボタンを安全に破棄できるように、キューに入れられたイベントをどのように削除するかです。