Re: Кто заставляет засыпать мой процесс?
От: AlexZu Россия  
Дата: 19.04.06 12:47
Оценка: 3 (1)
Здравствуйте, PDmitry, Вы писали:

PD>
PD>ProcessStartInfo startInfo = new ProcessStartInfo("ffmpeg.exe","-i 1.avi -y -b 360 -r 25 -s 320x200 -deinterlace -ab 56 -ar 22050 -ac 1 \"2.flv\" ");
PD>startInfo.RedirectStandardError = true;

PD>startInfo.RedirectStandardOutput = true;
PD>startInfo.RedirectStandardInput = true;
PD>startInfo.UseShellExecute = false;
PD>startInfo.CreateNoWindow = true;
            
PD>Process process = Process.Start(startInfo);
PD>process.PriorityClass = ProcessPriorityClass.Normal;
PD>Console.WriteLine(process.StandardOutput.ReadToEnd());
PD>process.WaitForExit();
PD>


Ключевое выделенно. Раз вы указали, что необходимо перенаправлять поток ошибок, то вы обязаны читать из этого потока,
поскольку пишущий в поток ошибок дочерний процесс будет заблокирован при заполнении буфера потока ошибок пока вы не прочитаете его.
Причем при перенаправлении более одного потока чтение необходимо производить в отдельных нитях (thread) для каждого потока,
дабы избежать блокировок.

Еще раз почитайте ремарку к ProcessStartInfo.RedirectStandardError.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.