2

c# 我想检测启动的程序是否已关闭。我目前正在使用命令启动它

 Process.Start(Environment.CurrentDirectory + @"\Card Downloader.exe"); 

有没有人有办法做到这一点,也许使用不同的启动器?

4

4 回答 4

7

Process.Start方法返回一个Process实例。在这种情况下,您可以使用一些可用的方法,例如WaitForExit或订阅Exited将在此过程结束时触发的事件。

var process = Process.Start(Environment.CurrentDirectory + @"\Card Downloader.exe"); 
process.Exited += (sender, e) =>
{
    // this will be called when the process exists
};
于 2013-03-10T09:43:24.363 回答
4

Process.Start() 方法返回一个 Process 对象。将其分配给一个变量并调用 WaitForExit() on。

来源:http: //msdn.microsoft.com/en-us/library/fb4aw7b8.aspx

于 2013-03-10T09:44:29.903 回答
2

您可以使用Process.Exit事件

var myProcess = new Process();
...
myProcess.Exited += new EventHandler(myProcess_Exited);
myProcess.Start();
于 2013-03-10T09:44:38.193 回答
1

您需要订阅流程退出事件,还要将 EnableRaisingEvents 标志设置为 true。

var process = Process.Start(Environment.CurrentDirectory + @"\Card Downloader.exe");
process.EnableRaisingEvents = true;
process.Exited += (sender, e) =>
{
    ...
};

根据MSDN,如果您不设置该标志,则仅当进程在用户执行对 HasExited 属性的调用期间或之前关闭时才会引发事件。

于 2020-07-23T14:59:16.957 回答