Есть ли в памяти поток, который блокирует как файловый поток
Я использую библиотеку, которая требует, чтобы я предоставил объект, который реализует этот интерфейс:
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 заблокировать, если нет доступных данных или есть другой поток памяти, который я мог бы использовать?