1
 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 添加了using语句,错误并没有消失!?

如果我在 memorystream 或 gzipstream 对象上使用它,那么错误就会消失。是造成这种行为吗?

4

1 回答 1

0

原因可能是,当调用它自己的方法GZipStream时,它正在处理底层流。Dispose因此,我建议仅保留该Using声明GZipStream。至少,这是 .NET 框架中大多数内置流包装器的行为。例如,当/被调用BufferedStream时将关闭底层流对象(根据MSDN文档,行为在代码示例的注释中解释)Close()Dispose()

于 2013-04-29T16:31:17.877 回答