WriteLine будет автоматически использовать Enviroment.Newline тогда?
я есть (C #) консольное приложение, которое поддерживает состояние. Состояние может быть изменено путем подачи приложения с различным вводом через консоль. Я должен быть в состоянии подать приложение с небольшим вводом, затем прочитать промывку вывода и повторить.
Я создаю новый процесс и выполняю всю обычную работу по перенаправлению ввода / вывода. Проблема в том, что после того, как я послал ввод и вызовReadLine()
на стандартном выходе он не возвращает значение, прежде чем я позвонюClose()
на стандартном вводе, после которого я не могу больше писать в поток ввода.
Как я могу держать входной поток открытым, все еще получая вывод?
var process = new Process
{
StartInfo =
{
FileName =
@"blabal.exe",
RedirectStandardInput = true,
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
ErrorDialog = false
}
};
process.EnableRaisingEvents = false;
process.Start();
var standardInput = process.StandardInput;
standardInput.AutoFlush = true;
var standardOutput = process.StandardOutput;
var standardError = process.StandardError;
standardInput.Write("ready");
standardInput.Close(); // <-- output doesn't arrive before after this line
var outputData = standardOutput.ReadLine();
process.Close();
process.Dispose();
Консольное приложение, из которого я перенаправляю ввод-вывод, очень простое. Он читает из консоли, используяConsole.Read()
и пишет в него, используяConsole.Write()
, Я точно знаю, что эти данные читаемы, так как у меня есть другое приложение, которое читает из него, используя стандартный вывод / ввод (не записанный в .NET).