2014-10-28 15 views
0

I'm使用這樣過程 - 等到it's超過

 System.Diagnostics.Process prc1 = new System.Diagnostics.Process(); 
     prc1.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; 
     prc1.StartInfo.FileName = "C:\\WINDOWS\\system32\\cmd.exe"; 
     prc1.StartInfo.Arguments = @"/c C:\app.exe -f C:\appConfigs.cfg "; 
     prc1.Start(); 
     prc1.CloseMainWindow(); 

過程因此,這將打開一個MSDOS窗口,它會保持打開狀態,直到「任務」真是完了,
到目前爲止這麼好,但如果我想要,在這段代碼之後,讓我們說給用戶發出一條信息,說「工作已完成」,是否有辦法知道它何時完成? (當DOS窗口關閉?)

我可以用一個計時器,但它需要的時間取決於信息,我需要處理量。

+0

過程有一個[退出的事件(http://msdn.microsoft.com/en-us/:如果你想要做的一切都顯示一個消息,你可以在一行像這樣指定它庫/ system.diagnostics.process.exited(v = vs.110)的.aspx),您可以掛接到: – StuartLC 2014-10-28 15:36:27

+0

[Process.WaitForExit方法](http://msdn.microsoft.com/en-us/library/system .diagnostics.process.waitforexit(v = vs.110)的.aspx)做這 – MethodMan 2014-10-28 15:37:02

+0

嗯一些閱讀/研究,你要等到過程結束(防止任何更多的代碼執行,直到進程終止?)像您的標題暗示(在這種情況下請遵循DJ KRAZE的建議),還是您希望您的應用程序繼續運行,但在流程終止時採取一些措施? – 2014-10-28 15:41:52

回答

1

訂閱Exited事件。

prc1.Exited += (s, a) => MessageBox.Show("Job Finished");