相关疑难解决方法(0)

内存流是否像文件流一样阻塞

我正在使用一个库,要求我提供一个实现此接口的对象:

public interface IConsole {
    TextWriter StandardInput { get; }
    TextReader StandardOutput { get; }
    TextReader StandardError { get; }
}
Run Code Online (Sandbox Code Playgroud)

然后,对象的读者将被库使用:

IConsole console = new MyConsole();
int readBytes = console.StandardOutput.Read(buffer, 0, buffer.Length);
Run Code Online (Sandbox Code Playgroud)

通常,实现IConsole的类具有来自外部进程的StandardOutput流.在这种情况下,console.StandardOutput.Read通过阻塞来调用,直到有一些数据写入StandardOutput流.

我要做的是创建一个测试IConsole实现,它使用MemoryStreams和echo在StandardInput上显示的任何内容返回到StandardInput.我试过了:

MemoryStream echoOutStream = new MemoryStream();
StandardOutput = new StreamReader(echoOutStream);
Run Code Online (Sandbox Code Playgroud)

但问题是console.StandardOutput.Read将返回0而不是阻塞,直到有一些数据.无论如何,如果没有可用数据或者我可以使用的内存流有什么不同,我可以得到一个MemoryStream来阻止吗?

c# memorystream stream

14
推荐指数
2
解决办法
3505
查看次数

标签 统计

c# ×1

memorystream ×1

stream ×1