我有一个接收流使用的BinaryWriter它来写一个方法。 但是,当我处理这个的BinaryWriter还关闭该流。 我可以把它未予处置,所以我可以离开我的流打开?
Answer 1:
只是不调用Dispose,使用冲洗代替,它的安全。
Answer 2:
作为.NET 4.5中,类的BinaryWriter有一个新的构造函数,需要一个布尔参数指示是否离开流开放与否。
参考: http://msdn.microsoft.com/en-us/library/gg712841.aspx
public BinaryWriter(
Stream output,
Encoding encoding,
bool leaveOpen
)
Answer 3:
在的情况下BinaryWriter
,这不是一个直接的选择(虽然有些流包装做的让你控制这一点,例如GZipStream
等)。
乔恩在NonClosingStreamWrapper MiscUtil这应该工作:您在非封闭包装包装你的流,并给予包装器BinaryWriter
。 这主要是通过一切除了通过Close()
和Dispose()
。
Answer 4:
受保护的BinaryWriter.Dispose(布尔)方法是虚拟的,它是所有关闭流(你可以检查它是否是真实的反射器 )。 - 该方法是由Dispose()方法被调用。
你可以简单地继承了一个的BinaryWriter类并重写的Dispose(布尔)方法什么都不做,或者别的产品总数。
文章来源: Why a BinaryWriter closes the outer Stream on disposal, and how to prevent that? (.NET C#)