При работе через Process
класса, вы можете перенаправить потоки, так что вы можете обработать их. Вы можете читать из stdout или stderr синхронно или асинхронно. Чтобы включить перенаправление, установите соответствующие свойства перенаправления на true
для потоков, которые вы хотите перенаправить (например, RedirectStandardOutput
) и установите UseShellExecute
в false
. Затем вы можете просто начать процесс и прочитать из потоков. Вы также можете подавать входной перенаправление stdin.
например, процесс и печать любой процесс записывает в стандартный вывод синхронно
var proc = new Process()
{
StartInfo = new ProcessStartInfo(@"SomeProcess.exe")
{
RedirectStandardOutput = true,
UseShellExecute = false,
}
};
if (!proc.Start())
{
// handle error
}
var stdout = proc.StandardOutput;
string line;
while ((line = stdout.ReadLine()) != null)
{
// process and print
Process(line);
Console.WriteLine(line);
}
Я нашел образец [здесь] (http://msdn.microsoft.com/en-us/library/system. диагностика.процесс% 28v = vs.80% 29.aspx), который показывает, как читать как stdout, так и stderr с помощью потоков. См. Также http://cleancode.sourceforge.net/api/csharp/html/T_CleanCode_IO_ExecProcess.htm. –