2015-07-30 12 views
0

Я пытаюсь автоматизировать HandbrakeCLI с помощью C# через класс System.Diagnostics.Process. Однако, пока моя программа пытается запустить процесс, кажется, что этот процесс никогда не продвигается.HandbrakeCLI не автоматизирует процесс C#

Вот мои настройки процесса:

Process process = new System.Diagnostics.Process(); 
ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.RedirectStandardOutput = true; 
startInfo.RedirectStandardError = true; 
startInfo.UseShellExecute = false; 
startInfo.CreateNoWindow = true; 
startInfo.FileName = parameters.HandbrakeLocation; 
startInfo.Arguments = arguments; 

process.StartInfo = startInfo; 
process.Start(); 

string output = string.Empty; 
while ((output = process.StandardOutput.ReadLine()) != null) 
{ 
    Debug.WriteLine(output); 
} 
process.WaitForExit(); 

HandbrakeCLI.exe появляется в моем списке процессов. Debug.WriteLine (выход); line постоянно выводит «Кодирование: задача 1 из 1, 0.00%», и процесс никогда не завершается. Если я убью свое приложение C#, то HandbrakeCLI мгновенно начнет снимать с 7 000 КБ в памяти до 145 000 тыс., А затем сделает кодировку, которую я хочу сделать. Его, как мое приложение C#, удерживает его.

Я попытался использовать Read() вместо ReadLine(), и я попытался выполнить промывку потока StandardOutput до и после чтения без каких-либо успехов. У меня есть подозрение, что, поскольку HandbrakeCLI перезаписывает stdout при записи прогресса кодирования, он не будет действовать как обычный процесс при автоматическом использовании через C#.

ответ

0

Я понял. Я перенаправлял stderr на свое приложение C#, но не использовал его. Процесс висел до тех пор, пока не был уничтожен stderr.

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

  • Нет связанных вопросов^_^