0

IDisposable の使用方法のパターンに従って、Microsoft はファイナライズを使用してアンマネージド ソースをリリースすることを提案しています。 http://msdn.microsoft.com/en-us/library/system.idisposable%28v=VS.80%29.aspx

しかし、管理されたソースをファイナライズで解放するコードを書くとどうなるでしょうか? つまり、管理されたソースを解放するために GC 呼び出しが完了すると、何が起こるでしょうか?

4

4 に答える 4

3

これは一般的に悪い習慣です。ファイナライザー コードでは、オブジェクトとその管理対象リソースの状態に依存することはできません。それらは既に収集または破棄/ファイナライズされている可能性があります。また、CLR が を呼び出す順序に依存することはできませんFinalize

于 2013-07-11T06:24:11.127 に答える
0

ファイナライザーで管理されているものをリリースする理由 (または、より良い方法) は何ですか? 現在のオブジェクトが所有するものはすべて、この時点ですでにガベージと見なされており、ガベージ コレクターの次の実行で収集されます。また、カレントが所有していないものはすべて、他の何かがまだそれを参照している可能性があるため、解放できません。

于 2013-07-11T07:49:48.603 に答える
-1

マネージド コードの Dispose/Finalize を記述する必要はありません。bcz オブジェクトが参照されなくなると、CLR によって削除されます。Dispose メソッドは、ファイル ハンドラーやデータベース コマンドなどのアンマネージ コード用に作成されます。

于 2013-07-11T08:27:18.720 に答える