ストリームが流れ出ます

 

文章; MemoryStream.Close()またはMemoryStream.Dispose()

 

Close() そして  Dispose()上で呼び出されたときに、  MemoryStream2つのだけのことを行うのに役立ちます。

  • オブジェクトの将来の偶然の使用量は例外がスローされますように配置されたオブジェクトをマークします。
  • おそらく1  GCの実装に応じて、少し簡単GCの仕事をすることができ、管理対象オブジェクトへのリリース参照。(これは学術的議論のポイントであり、有意な実世界での影響力を持っていないので、今日のGCアルゴリズム上では、本当の違いはありません。)

MemoryStream あなたが技術的にそれを処分する必要はありませんので、処分するために、任意のアンマネージリソースを持っていません。処分ではないの効果は  MemoryStream およそへの参照をドロップすると同じことである  byte[] GCが同じように両方をクリーンアップします- 。

私はどちらを呼ぶのですか?それは、両方を呼び出すために必要ですか?

Dispose() ストリームの方法は、  直接委任  Close() 方法2、その両方がまったく同じことを行います。

私はすでにそれらのいずれかを呼び出した場合は、他には例外がスローされますか?

ドキュメント IDisposable.Dispose()  、具体的には、呼び出すために安全であると述べ  Dispose() 任意のオブジェクトの上に、複数回3(つまり、特定のクラスのために真でない場合、そのクラスが実装  IDisposable の契約に違反し、これはバグだろうな方法でインターフェース。)

すべてのことは言って:あなたは処分するかどうか、それは本当に大きな違いはありません  MemoryStream か。それが持っている唯一の本当の理由  Close/ Dispose それから継承するための方法がある  Streamのサポートストリームへの契約の一環として、これらのメソッドを必要とする、   (そのようなファイルやソケット記述子など)アンマネージリソースを持っています。

 

おすすめ

転載: www.cnblogs.com/Tpf386/p/11971695.html