为什么一个BinaryWriter关闭外流处置,以及如何防止?(.净C#)
-
23-08-2019 - |
题
我有一种方法,接收一个流写入关于使用BinaryWriter.但是,当我处理这BinaryWriter它还关闭流。我可以留下它未释放所以我可以离开我的流打开吗?
解决方案
只要不调用Dispose,使用冲洗代替,它的安全。
其他提示
作为.NET 4.5,所述的BinaryWriter类有一个新的构造,需要一个布尔参数,以指示是否离开流打开或没有。
价: http://msdn.microsoft.com/en-us/library/gg712841.aspx
public BinaryWriter(
Stream output,
Encoding encoding,
bool leaveOpen
)
在BinaryWriter
的情况下,即不是直接选项(尽管某些流包装做可用于控制这一点,例如GZipStream
等)。
乔恩在NonClosingStreamWrapper MiscUtil 这应该工作:你换你流非闭合的包装,给包装上,以BinaryWriter
。这基本上通过除了Close()
和Dispose()
一切。
受保护的BinaryWriter.Dispose(bool)的方法是虚拟的,它所做的就是关闭流(你可以检查它是真实的 反射器).-这种方法称为通过Dispose()方法。
你可以简单地继承一类从BinaryWriter和复盖Dispose(bool)的方法来做什么,或者其他什么东西产品总数.
不隶属于 StackOverflow