私は C#/Windows Forms にプロジェクトを持っています。ここにはPictureBox
、バックグラウンド スレッドから画像を描画する単純なフォームがあります。描画がアクティブなときにフォームを閉じると、ビットマップを更新するために呼び出しを実行しようとすると、バックグラウンド スレッドがクラッシュします。これは非常に論理的です。デストラクタが待機することを試みたAutoResetEvent
ので、すべての描画が完了し、バックグラウンド スレッドが終了することを認識するまで、デストラクタは返されません。しかし、デストラクタが実行される前にクラッシュが発生すると結論付けたので、フォームのコンポーネントがどの時点で破棄されるのか疑問に思い始めました。デストラクタの前だと思いますか?では、描画が完了するまで安全に待機できる場所はどこでしょうか? オーバーライドDispose()
してそこで行いますか?