Этот код выполняет «handbrakecli» (приложение командной строки) и помещает вывод в строку:
Dim p As Process = New Process
p.StartInfo.FileName = "handbrakecli"
p.StartInfo.Arguments = "-i [source] -o [destination]"
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.Start
Dim output As String = p.StandardOutput.ReadToEnd
p.WaitForExit
Проблема в том, что это может занять до 20 минут, в течение которых пользователю ничего не сообщается. Как только он будет завершен, они увидят все выходные данные из приложения, в том числе сведения о ходе выполнения. Не очень полезно.
Поэтому я пытаюсь найти образец, который показывает лучший способ:
- Запустить внешнее приложение (скрытое)
- Периодически контролировать его вывод, так как он отображает информацию о его прогрессе (так что я могу извлечь его и представить пользователю хороший процентный бар)
- Определите, когда завершилось внешнее приложение (поэтому я не могу продолжить выполнение своих собственных приложений)
- При необходимости убить внешнее приложение и определить, когда это произошло (так что, если пользователь нажмет «Отмена», я получу соответствующие шаги)
У кого-нибудь есть рекомендуемые фрагменты кода?