このコードは「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 分かかる場合があり、その間、ユーザーには何も報告されないことです。完了すると、進行状況の詳細を含むアプリケーションからのすべての出力が表示されます。あまり役に立ちません。
したがって、次の最適な方法を示すサンプルを見つけようとしています。
- 外部アプリケーションを開始する (非表示)
- 進行状況に関する情報が表示されるので、出力を定期的に監視します (これを抽出して、ユーザーに適切なパーセンテージ バーを表示できます)。
- 外部アプリケーションがいつ終了したかを判断します (そのため、自分のアプリケーションの実行を続行できません)
- 必要に応じて外部アプリケーションを強制終了し、これがいつ発生したかを検出します (ユーザーが「キャンセル」を押した場合に適切な手順を実行できるようにします)
推奨されるコード スニペットはありますか?