Existe um fluxo na memória que bloqueia como um fluxo de arquivos

Estou usando uma biblioteca que requer que eu forneça um objeto que implemente essa interface:

public interface IConsole {
    TextWriter StandardInput { get; }
    TextReader StandardOutput { get; }
    TextReader StandardError { get; }
}

Os leitores do objeto são então usados ​​pela biblioteca com:

IConsole console = new MyConsole();
int readBytes = console.StandardOutput.Read(buffer, 0, buffer.Length);

Normalmente, a classe que implementa o IConsole possui o fluxo StandardOutput como proveniente de um processo externo. Nesse caso, o console.StandardOutput.Read chama o trabalho bloqueando até que alguns dados sejam gravados no fluxo StandardOutput.

O que estou tentando fazer é criar uma implementação de IConsole de teste que use MemoryStreams e echo seja o que for exibido no StandardInput de volta para o StandardInput. Eu tentei:

MemoryStream echoOutStream = new MemoryStream();
StandardOutput = new StreamReader(echoOutStream);

Mas o problema com isso é que o console.StandardOutput.Read retornará 0 em vez de bloquear até que haja alguns dados. Existe alguma maneira que eu possa obter um MemoryStream para bloquear se não houver dados disponíveis ou se houver algum fluxo de memória diferente que eu possa usar?

questionAnswers(3)

yourAnswerToTheQuestion