30

BinaryWriter を使用して書き込む Stream を受け取るメソッドが 1 つあります。しかし、この BinaryWriter を破棄すると、ストリームも閉じます。ストリームを開いたままにしておくことができるように、未処理のままにしておくことはできますか?

4

4 に答える 4

59

.NET 4.5 の時点で、BinaryWriter クラスには、ストリームを開いたままにするかどうかを示すブール値パラメーターを受け取る新しいコンストラクターがあります。

参照: http://msdn.microsoft.com/en-us/library/gg712841.aspx

public BinaryWriter(
    Stream output,
    Encoding encoding,
    bool leaveOpen
)
于 2012-08-21T17:24:59.260 に答える
21

の場合BinaryWriter、これは直接的なオプションではありません (ただし、一部のストリーム ラッパーでは、これを制御できますGZipStream)。

Jon は MiscUtil にNonClosingStreamWrapperを持っていますBinaryWriterClose()これは基本的に、 とを除くすべてを通過しますDispose()

于 2009-07-05T20:57:23.007 に答える
9

Dispose を呼び出さないでください。代わりに Flush を使用してください。安全です。

于 2009-07-05T21:03:58.733 に答える
9

protected BinaryWriter.Dispose(bool) メソッドは仮想であり、ストリームを閉じるだけです ( Reflectorで true であることを確認できます)。-このメソッドは、Dispose() メソッドによって呼び出されます。

BinaryWriter からクラスを継承し、Dispose(bool) メソッドをオーバーライドして何もしないか、または他のことをすべて行うことができます。

于 2009-07-05T21:04:48.793 に答える