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() を手動で呼び出すレガシー コードがいくつかありました。そこで、メモリ ストリームと gzipstream の両方にusingステートメントを追加しましたが、エラーは消えませんでした!?

memorystream または gzipstream オブジェクトのいずれかで使用すると、エラーはなくなりました。この動作の原因はありましたか?

4

1 に答える 1

0

The reason may be, because the GZipStream is disposing of the underlying stream when its own Dispose method is called. Therefore, I'd recommend keeping the Using statement for the GZipStream only. At least, this is the behavior of most built-in stream wrappers in the .NET framework. For instance BufferedStream will close the underlying stream object when Close()/Dispose() is invoked (as per the MSDN documentation, behavior is explained in a comment in the code sample)

于 2013-04-29T16:31:17.877 に答える