Есть ли в памяти поток, который блокирует как файловый поток

Я использую библиотеку, которая требует, чтобы я предоставил объект, который реализует этот интерфейс:

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

Затем читатели объекта используются библиотекой с:

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

Обычно класс, реализующий IConsole, имеет поток StandardOutput как поступающий от внешнего процесса. В этом случае вызовы console.StandardOutput.Read работают путем блокирования, пока в поток StandardOutput не будут записаны некоторые данные.

Я пытаюсь создать тестовую реализацию IConsole, которая использует MemoryStreams и отображает все, что появляется в StandardInput, обратно в StandardInput. Я пытался:

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

Но проблема в том, что console.StandardOutput.Read будет возвращать 0, а не блокировать, пока не появятся данные. Могу ли я в любом случае заставить MemoryStream заблокировать, если нет доступных данных или есть другой поток памяти, который я мог бы использовать?

Ответы на вопрос(3)

Ваш ответ на вопрос