0
私はC#でWPFアプリケーションを使用していますので、システムコマンドを実行する必要があります(Q
を押すのを待つため)。私は出力を初めて受け取った後に強制的に終了したいので、WPF UIをブロックしたくないので、非同期でこれをやりたい(スレッドがもっと複雑になると思う)。UIをブロックせずに非同期でシステムコマンドを実行し、強制的にプロセスを終了
これは私が今持っているものです。
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C " + command;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
上記のコードは、2つの問題があります。それはブロックUIをし、それが(プロセスが終了しません)の出力を得ることはありません。
注:先に進む前に出力が必要なので、WaitForExit()
を使用しました。
Processイベントを使用している場合、Process.BeginErrorReadLine()およびProcess.BeginOutputReadLine()を呼び出すとイベントが非同期で発生するため、バックグラウンドワーカーは不要です。 – Sabre