如何在Dispose中阻止GzipStream阻塞?

时间:2017-09-14 16:08:53

标签: c# gzipstream

我正在从一个GzipStream中读取,它将一个NetworkStream包装在一个UI事件处理程序中。

using (var gzipStream = new GzipStream(networkStream, CompressionMode.Decompress) {
    await WriteSomethingToStream(gzipStream);
}

GzipStream包装的DeflateStream在其Dispose方法中有一个阻塞的Write调用,用于刷新缓冲区。
因此,在Using语句结束时,gzipStream.Dispose()阻止,UI将阻止。

也没有GzipStream.DisposeAsync/CloseAsync()方法。

那么在处理时我怎么不阻止? FlushAsync不起作用,因为根据它的(Flush)文档,它什么都不做。

  

此方法的当前实现不会刷新内部缓冲区。处理对象时刷新内部缓冲区。

0 个答案:

没有答案