Using ms As New MemoryStream
Dim st As New GZipStream(ms, CompressionMode.Compress, True)
'... some code
Return buffer
End Using
而且:
dim As New MemoryStream
using st As New GZipStream(ms, CompressionMode.Compress, True)
'... some code
Return buffer
End Using
我有一些遗留代码在流对象上手动调用Dispose()和Close() - 这导致CA2202代码分析警告可能多次调用Dispose()。所以我为内存流和gzipstream添加了使用语句,错误没有消失!?
如果我在memorystream或gzipstream对象上使用它,那么错误就会消失。是造成这种行为吗?
答案 0 :(得分:0)
原因可能是,因为GZipStream
在调用自己的Dispose
方法时正在处理基础流。因此,我建议仅保留Using
的{{1}}语句。至少,这是.NET框架中大多数内置流包装器的行为。例如,GZipStream
将在调用BufferedStream
/ Close()
时关闭基础流对象(根据MSDN文档,行为在代码示例中的注释中解释)< / p>