-1
我創建了一個帶有2個按鈕的WPF應用程序。在執行cmd的第一個按鈕的點擊並等待命令的完成,因爲我需要在執行完成後讀取結果文件。在第二個按鈕上單擊我停止執行cmd進程kill。執行方法時無法與wpf元素進行交互
但是在啓動命令執行後,我無法在完成cmd執行之前停止執行。
是否有任何並行執行方式?
開始按鈕代碼
string filename = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "nunit-console.exe");
Process proc = Process.Start(filename, "/result:" + resultFile + ".xml " + fileName);
proc.WaitForExit();
使用[多線程(https://www.tutorialspoint.com/csharp/csharp_multithreading.htm),因爲它等待'proc.WaitForExit()你的主線程被凍結;' –
@Nobody是正確的。細化一下,你的UI有它自己的線程,並且需要遵循一些規則來使你的UI更新或更改其他線程。研究異步/等待和更新到/從UI線程。那裏有大量的例子和教程。 –
請注意,您可能或可能不需要使用'WaitForExit()'。這取決於其他代碼,這是你沒有打算展示的。 Process類提供異步處理I/O和狀態處理。見例如https://stackoverflow.com/questions/2085778/c-sharp-read-stdout-of-child-process-asynchronously。在後臺任務或線程中運行上述代碼是最直觀的解決問題的方法,但還有其他解決方法。 –