C# 创建垫片流

C# 创建垫片流,c#,stream,buffering,C#,Stream,Buffering,我正在使用的解压缩API具有以下API: Decode(Stream inStream,Stream outStream) 我想围绕这个API创建一个包装器,这样我就可以创建自己的Stream类来提供解码数据 Stream decodedStream=new BlaDecodeStream(inStream); 因此,我可以使用这个流作为XmlReader构造函数的参数,就像使用System.IO.Compression.GZipStream一样。据我所知,唯一的另一个选择是将outStre

我正在使用的解压缩API具有以下API:

Decode(Stream inStream,Stream outStream)
我想围绕这个API创建一个包装器,这样我就可以创建自己的
Stream
类来提供解码数据

Stream decodedStream=new BlaDecodeStream(inStream);
因此,我可以使用这个流作为XmlReader构造函数的参数,就像使用
System.IO.Compression.GZipStream
一样。据我所知,唯一的另一个选择是将outStream流设置为MemoryStream或FileStream,并分两次跳转。我处理的文件数量巨大,因此这两种选择都不是特别有吸引力

在我重新发明轮子之前,是否有我可以借鉴的现有技术,或者BCL中我可能错过的东西?循环流的
CircularStream
实现在某种程度上会有所帮助,但我真的在寻找类似的东西,当流的内部缓冲区在读取时为“空”时会被阻塞(而不是过度/不足),当内部缓冲区在写入时被填满时会被阻塞

通过这种方式,它可以作为参数
outStream
,同时(即从另一个线程)可以被
XmlReader
读取。我实施了其中一个建议,效果很好。

我刚才问过。我实施了其中一个建议,效果很好