2014-02-02 3 views
1

Я использую в своем программном обеспечении два разных процесса. В обоих случаях я прочитал вывод процесса и дал пользователю некоторое представление об этом.Захват STDOUT процесса в C#

ProcessStartInfo si = new ProcessStartInfo(); 

si.WindowStyle = ProcessWindowStyle.Hidden; 
si.UseShellExecute = false; 
si.CreateNoWindow = true; 
si.RedirectStandardError = true; 
si.RedirectStandardOutput = true; 

si.FileName = "proc.exe"; 
si.Arguments = "some args"; 

Process p = new Process(); 
p.StartInfo = si; 
p.ErrorDataReceived += cmd_Error; 
p.OutputDataReceived += cmd_DataReceived; 
p.EnableRaisingEvents = true; 

p.Start(); 
p.BeginOutputReadLine(); 
p.BeginErrorReadLine(); 

p.WaitForExit(); 

В первом случае он отлично работает! , но в другом случае процесс выполняет свою работу, но только события завершения увольняются. При запуске его с

si.WindowStyle = ProcessWindowStyle.Normal 

Я вижу, что есть выход для этого процесса.

В чем может быть проблема? Почему выходные события не запускаются?

+0

Вы правы .. Я имел в виду Обычный - отредактированный –

ответ

1

Так что если один процесс работает, а другой нет, вы уверены, что другой процесс на самом деле записывается в stdout?

Быстрое испытание может подтвердить. Запустите его из командной строки со следующим синтаксисом;

myprocess.exe> ​​output.txt

Если output.txt пусто, то он не пишет на стандартный вывод и ваша программа работает нормально.

Смежные вопросы