0

メソッドを終了する前にすべてのオブジェクトを破棄する必要があるか、ガベージ コレクションによって自動的に処理するかを問わず、.net Web サービス アプリケーションを開発しました。

4

2 に答える 2

1

実装IDisposableするものはすべて破棄する必要があります。その他のオブジェクトは自動的に収集されます。

最良の廃棄方法:

using (var item = new ADisposableClass())
{
   // Use the item here
}
// item will be disposed even if there was an error since it is inside "using"
于 2012-08-21T12:18:04.530 に答える
0

実装するオブジェクトは、使い終わったらそのメソッドIDisposableを明示的に呼び出すように指示しています。Disposeこれは、可能な限り最小限の時間だけ保持する必要があるリソースを消費するためです。

このDispose呼び出しにより、オブジェクトが使用していたすべてのリソースが解放されます。メソッドの一般的な実装ではDispose、ガベージ コレクターは、オブジェクトをファイナライズするときに、このメソッドのオーバーロードを呼び出します。これにより、ファイル ハンドルなどのアンマネージ リソースが処理されます。ただし、管理対象リソースは通常、この時点では解放されません。代わりに、ガベージコレクターがそれらをクリーンアップするのを待ちます。

そのため、Web サービス メソッドだけでなく、そのようなオブジェクトは、使い終わったら必ず破棄する必要があります。usingブロックはこれを行う最も簡単な方法です。

于 2012-08-21T12:21:06.887 に答える