estoy usando una biblioteca que requiere que proporcione un objeto que implementa esta interfaz:¿Hay una en secuencia de memoria que bloquea como una secuencia de archivo
public interface IConsole {
TextWriter StandardInput { get; }
TextReader StandardOutput { get; }
TextReader StandardError { get; }
}
lectores del objeto luego son utilizados por la biblioteca con:
IConsole console = new MyConsole();
int readBytes = console.StandardOutput.Read(buffer, 0, buffer.Length);
Normalmente, la clase que implementa IConsole tiene la secuencia StandardOutput como procedente de un proceso externo. En ese caso, las llamadas console.StandardOutput.Read funcionan bloqueando hasta que haya algunos datos escritos en la transmisión StandardOutput.
Lo que intento hacer es crear una implementación de IConsole de prueba que use MemoryStreams y echo lo que aparezca en la entrada StandardInput en la entrada StandardInput. Probé:
MemoryStream echoOutStream = new MemoryStream();
StandardOutput = new StreamReader(echoOutStream);
Pero el problema con esto es la console.StandardOutput.Read retornará 0 en lugar de bloques hasta que hay algunos datos. ¿Hay alguna forma de que pueda bloquear un MemoryStream si no hay datos disponibles o hay un flujo de memoria diferente que pueda usar?
Realmente no debería leer de una secuencia de salida. –