我使用這個:如何知道什麼時候通過的Process.Start創建進程()被關閉?
var proc2 = Process.Start(Path.GetFullPath(filename));
proc2.Exited += (a, b) =>
{
MessageBox.Show("closed!");
};
但我關閉窗口並沒有得到MessageBox.Show("closed!");
。如何解決這個問題?
我使用這個:如何知道什麼時候通過的Process.Start創建進程()被關閉?
var proc2 = Process.Start(Path.GetFullPath(filename));
proc2.Exited += (a, b) =>
{
MessageBox.Show("closed!");
};
但我關閉窗口並沒有得到MessageBox.Show("closed!");
。如何解決這個問題?
火災警報您需要設置Process.EnableRaisingEvents
到真正。
你忘了啓用活動
Process p;
p = Process.Start("cmd.exe");
p.EnableRaisingEvents = true;
p.Exited += (sender, ea) =>
{
System.Windows.Forms.MessageBox.Show("Cmd was Exited");
};
你忘了設置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();
您已經驗證過程實際上結束了? –
@BryanCrosby:是的。 – Jack