通常、明示的に処理する必要があるのはほんのわずかです。
オブジェクトは、常に効果的一部時点で配置されている:
- GCコレクションをする任意の時間を、それは(最終的に)もはや参照されるオブジェクトを処分します。したがって、手動で処理しないと、オブジェクトはスコープから外れて数秒以内に処分されることがあります。
- アプリケーションが終了すると、保持しているすべてのリソースが解放されます。 (オブジェクトはC#/ .netによって処理されないかもしれませんが、OSはあなたのプロセスを把握して戻ってくると主張します。資源の有効期間は、アプリケーションを超えて拡張する場合は、OSがそれをクリーンアップするために、通常は責任がある)
手動)を配置(または「を使用して」採用のポイントは、資源ことを確実にするためではないので、あるがリリースされますが、に可能な限り早くリリースしてください。
最近、ほとんどの種類のリソース(メモリ、ファイルハンドル、システムブラシなど)が使い果たされることはほとんどありません。ただし、必要がないときにリソースを保持すると、プログラムの効率が低下したり、必要以上にメモリを使用したり、一時的に他のアプリケーションの有用な処理をブロックして遅延を引き起こす可能性があります。 Disposingは良いエチケット、整頓、不必要な非効率性を排除することです。
リソースがである場合は、をリリースする必要があります(たとえば、ファイルを閉じることができない場合は、プログラムや他のプログラムのどこからでも名前を変更/移動/削除できません。あなたのグラフィックスカードにテクスチャを割り当てたまま放置しておくと、VRAMが使い果たされ、コンピュータのディスプレイに表示されません)。しかし、一般的に、これらの状況に遭遇することはめったになく、ベストプラクティス(明示的にオブジェクトを 'もう必要ない)、通常、これらの状況がいつ起こっているかを知る必要はありません。なぜなら、それらの状況がすでに正しく処理されているからです。
問題は、この状況でのオブジェクトの寿命を完全には理解していないことです。私が(Process.Start(url))を使用している場合。その時点で待ちますか?あるいはプロセスを早期に処分するか?現時点では、それは行動に違いはありませんので、オープンな状態に保たれているリソースはないと確信していますが、確かなことは分かりませんし、その測定方法もわかりません。 –
"using"句は暗黙のうちにtry/finallyをビルドしてdisposeを実装し、IDisposableオブジェクトを返すという事実をコンパイラに指示するので、あなたはそれを行うのが安全だと思います。割り当てを解除しないと、リソースを結びつける可能性があります。いくつかのURLを破棄せずに開き、リソースが制御から外れているかどうか、そして節を使用して別のテストをラップすることで、ループを構築することができます。注意しなければならないのは、その後に閉じるための窓がたくさんあるからです。 :) – Fooberichu