「アプリケーションがシャットダウンする」とは、プロセスが終了していることを意味する場合、技術的には何もする必要はありません。プロセスが終了し、OSがこれらのリソースを解放します。
一部のコンポーネントが特定の種類のファイルやその他のリソースを作成する可能性があり、Dispose
呼び出されない場合は、プロセスが終了しても必ずしもクリーンアップされるとは限らない、あいまいなコーナーケースである可能性があります。
これは奇妙なコーナーケースですが、例を挙げたいと思います。コード内のコンポーネントを参照して使用するとします。これを作成して使用すると、マシン上に2GBのファイルが作成されます。次に、さらに一歩進んで、このコンポーネントが、バグまたは単に不適切な設計のために、使用中にこの2GBファイルにアクセスするファイルハンドル自体を実際に閉じているとしましょう。このオブジェクトのDispose
メソッドはこのファイルをクリーンアップしますが、十分に文書化されていません。基本的に、Dispose
これへの呼び出しを逃すと、マシンにファイルが残ります。これは間違いなくコーナーケースであり、マシンに「リーク」が発生することはありませんが、2GBのファイルがそこにあるだけです。
そうは言っても、ベストプラクティスはDispose
、リソースを決定論的に使用したときに呼び出すことです。Cleanup()
シングルトンで、シャットダウン時に実行できるメソッドを呼び出すことができます。