BinaryWriter を使用して書き込む Stream を受け取るメソッドが 1 つあります。しかし、この BinaryWriter を破棄すると、ストリームも閉じます。ストリームを開いたままにしておくことができるように、未処理のままにしておくことはできますか?
4 に答える
.NET 4.5 の時点で、BinaryWriter クラスには、ストリームを開いたままにするかどうかを示すブール値パラメーターを受け取る新しいコンストラクターがあります。
参照: http://msdn.microsoft.com/en-us/library/gg712841.aspx
public BinaryWriter(
Stream output,
Encoding encoding,
bool leaveOpen
)
の場合BinaryWriter
、これは直接的なオプションではありません (ただし、一部のストリーム ラッパーでは、これを制御できますGZipStream
)。
Jon は MiscUtil にNonClosingStreamWrapperを持っていますBinaryWriter
。Close()
これは基本的に、 とを除くすべてを通過しますDispose()
。
Dispose を呼び出さないでください。代わりに Flush を使用してください。安全です。
protected BinaryWriter.Dispose(bool) メソッドは仮想であり、ストリームを閉じるだけです ( Reflectorで true であることを確認できます)。-このメソッドは、Dispose() メソッドによって呼び出されます。
BinaryWriter からクラスを継承し、Dispose(bool) メソッドをオーバーライドして何もしないか、または他のことをすべて行うことができます。