2012-06-06 44 views

回答

3

您可以後proc2.WaitForExit()

+0

它會鎖定我的應用程序? – Jack

+0

它有一個可以指定超時的重載方法。不幸的是,它不會殺死你的進程,它只會繼續前進 –

4

你忘了啓用活動

Process p; 
p = Process.Start("cmd.exe"); 
p.EnableRaisingEvents = true; 
p.Exited += (sender, ea) => 
      { 
        System.Windows.Forms.MessageBox.Show("Cmd was Exited"); 
      }; 
5

你忘了設置EnableRaisingEvents爲true。

此外,您可能希望創建一個進程與構造,設置的ProcessStartInfo,然後調用啓動您註冊監聽事件之後。否則,你有一個競爭條件在進程退出之前,你甚至註冊偵聽事件(不太可能,我知道,但不是數學上是不可能)。

var process = new Process(); 

process.StartInfo = new ProcessStartInfo(Path.GetFullPath(filename)); 
process.EnableRaisingEvents = true; 

process.Exited += (a, b) => 
{ 
    MessageBox.Show("closed!"); 
}; 

process.Start(); 
相關問題