离开StreamReader而不关闭Stream

时间:2018-02-01 14:05:45

标签: c# azure streamreader azure-servicebusrelay

我目前正在使用Azure中继服务,并遇到处理流的问题。我需要以同步方式使用此服务,因为软件需要使用此实现。

我打开服务流并使用javac -d bin -sourcepath...[and so on] 从中读取数据,工作正常。但是现在我必须离开 StreamReader 而不关闭基础流,因为我必须将回复发送给发件人。

问题是,我无法在不关闭基础流的情况下离开StreamReader(),而且无法重新打开流以发送回复。

任何想法如何解决这个问题?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

有一个overload of the StreamReader constructor接受bool leaveOpen参数。传递true会阻止StreamReaderStreamReader被处置时关闭流。

  

leaveOpen

     

类型:System.Boolean

     

true 在StreamReader对象被释放后保持流打开;否则, false

示例,使用较简单的StreamReader构造函数获得的默认UTF8编码和1024字节缓冲区:

using (var reader = new StreamReader(stream, Encoding.UTF8, true, 1024, true))
{
    // use reader
} // stream will NOT be closed here