Dang - 10 年間の C# プログラミングを行ってきましたが、この言語には C++ のようなデストラクタがないという事実にまだ対処できません。99.9% の場合は問題ではありませんが、今では問題になっています。
私はユーザーコントロールを持っています。そのコントロールは、セカンダリ スレッドを起動します。セカンダリ スレッドを終了するために Dispose() をオーバーライドしましたが、すべて動作します。
まで....誰かがフォームを閉じるときに MyControl.Dispose() を呼び出すのを忘れています。その後、セカンダリ スレッドが終わらない終了信号を待機している間、アプリが終了することはありません。
コントロールをフォームに配置してアプリを実行し、ウィンドウの閉じるボタンをクリックするだけの簡単なことにヘルプトピックを含める必要があるのは、私には正しくないようです。「このコントロールを使用する場合は、MyControl.Dispose() を呼び出す必要があります!」のようなものです。(もちろん誰も読まない)
私の考えでは、コントロールはインスタンス化され、他の相互作用なしに自動的に破壊される必要があります。これはC#では不可能ですか?私のコントロールがコンテナオブジェクトが閉じたことを自動的に知る方法がわからないので、ファイナライズする必要がありますか?