在不关闭 Stream 的情况下离开 StreamReader

Leave StreamReader without closing Stream

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

我正在打开服务流并使用 StreamReader() 从中读取数据,工作正常。但是现在我必须 离开 StreamReader 而不关闭 底层流,因为我必须将答案发送回发件人。

问题是,我无法在不关闭底层流的情况下离开 StreamReader(),并且无法重新打开流以发送回应答。

有什么解决这个问题的想法吗?

感谢您的帮助。

有一个 overload of the StreamReader constructor 接受 bool leaveOpen 参数。传递 true 可防止 StreamReader 在处理 StreamReader 时关闭流。

leaveOpen

Type: System.Boolean

true to leave the stream open after the StreamReader object is disposed; otherwise, false.

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

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