【问题标题】:Detect if launched process has been closed检测启动的进程是否已关闭
【发布时间】:2013-03-10 09:38:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# process.start


    【解决方案1】:

    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
    };
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        你可以使用Process.Exit事件

        var myProcess = new Process();
        ...
        myProcess.Exited += new EventHandler(myProcess_Exited);
        myProcess.Start();
        

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-04
            相关资源
            最近更新 更多