目次:
定義-Disposeはどういう意味ですか?
C#のコンテキストでは、disposeは、メモリクリーンアップに必要なコードを実行し、ファイルハンドルやデータベース接続などのアンマネージリソースを解放およびリセットするために呼び出されるオブジェクトメソッドです。 Disposeは、Windowsのスペースが制限されているアプリケーションで使用されるグラフィックデバイスインターフェイス(GDI)ハンドルなどの管理不可能なオブジェクトとリソースを解放することにより、パフォーマンスを向上させ、メモリを最適化します。
IDisposableインターフェイスによって提供されるDisposeメソッドは、Dispose呼び出しを実装します。 廃棄パターンは、タイムリーで予測可能なクリーンアップ、一時的なメモリリークの防止、およびリソースの廃棄を目的として設計されています。
Techopediaは処分を説明します
.NETフレームワークは、ガベージコレクション(GC)を促進し、オブジェクトメモリとリソースを管理し、Finalizeを呼び出すことにより、無効なオブジェクトメモリ参照を回収します-非決定的メソッド。 Disposeメソッドは、オブジェクトメモリインスタンスの有効期間を制御し、Finalizeの暗黙的なメモリクリーンアップとは対照的に、明示的なメモリクリーンアップ制御を提供します。 他のメモリオブジェクトインスタンスが存在する場合でもDisposeを呼び出すことができますが、Finalizeは最後のメモリオブジェクトが破棄された後にのみ呼び出すことができます。
廃棄方法のルールは次のとおりです。
- 使用後すぐに解放する必要がある管理されていないリソースに使用されます。
- Disposeが呼び出されない場合、Finalizeメソッドを実装する必要があります。
- Disposeメソッドを呼び出した後、GC.SuppressFinalizeメソッドを呼び出して、Finalizeメソッドを回避し、不要なGCを回避する必要があります。
- Disposeメソッドが複数回呼び出される場合、例外は慎重に処理する必要があります。 リソースが破棄された場合、インスタンスメソッドはObjectDisposedExceptionをスローします。
- 以前に呼び出されたDisposeメソッドを持つオブジェクトは再利用できません。
- 破棄は、.NET Frameworkに公開されるネイティブリソースオブジェクトおよびコンポーネントオブジェクトモデル(COM)オブジェクトの管理にのみ推奨されます。
- 予測できない結果が発生するため、Disposeを複数のスレッドから同時に呼び出すことはできません。
- 値タイプは、使い捨てタイプとして作成したり、管理されていないリソースメンバーを使用して作成したりしないでください。
- アンマネージリソースを使用する場合、オブジェクトコードの完了後にオブジェクトのDisposeメソッドを自動的に呼び出すソースコードのUsingステートメントを適用することをお勧めします。




