私はこのコードを持っています:-
using (System.Security.Cryptography.SHA256 sha2 =
new System.Security.Cryptography.SHA256Managed())
{ .. }
その破棄スコープを離れる直前に、このコード行を配置する必要がありますか..またはすでに破棄の「呼び出し」を行いますか。
sha2.Clear();
私の知る限り、 Clear() メソッドは Dispose を呼び出すだけなので、 using ブロックは、使用されているリソースが確実に解放されるようにするのに十分なはずです。
Reflector を使用して見てみると、 をClear
呼び出すだけであることがわかるDispose
ため、例で呼び出す必要はありませんClear
。
フレームワーク クラスの多くは、Close
/ Clear
/Whatever カバーを提供Dispose
して、使用法をもう少し簡単にします。
私見 Dispose() を呼び出すだけではオブジェクトを破棄できない場合は、コードに重大なバグがあるか、設計に重大な欠陥があります。したがって、独自のコードで追加の手順を実行する必要はありません。
そして、一般的な役立つヒント - これらすべてのソースが最近利用可能であることを忘れないでください - 推測や推測をしなくても、この種の質問に答えるのに役立つことがよくあります.
これは開始するのに適した場所です: http://www.codeplex.com/NetMassDownloader
Dispose() で十分です。
.NET の仕組みがわかりません。ただし、追加関数呼び出しまたは「set null」は、Java でのパフォーマンスを低下させます。
CLR/Java VM は、次のガベージ コレクションで参照解除されたすべての管理対象オブジェクトを「ルート」からクリーンアップできるようになります (必要があります)。
PS。Dispose() は、「管理されていない」リソースをクリーンアップして、Finalizer スレッドが完了するのを待たないため、GC のパフォーマンスを向上させます。