【问题标题】:C# - how to check if a process was successfully started [duplicate]C# - 如何检查进程是否成功启动[重复]
【发布时间】:2012-06-19 08:36:09
【问题描述】:

可能重复:
How to know if Process.Start() is successful?

我的程序中有一个类似于看门狗的进程(我们称之为WD),它是另一个正在运行的进程(我们称之为A)。我在某个事件中启动WD 进程,假设按下了一个键,我想用这个进程启动另一个进程,我们称之为B。

问题是我想在我知道进程B 成功启动之后关闭初始进程A。我该如何检查?

我正在使用 Process.Start(argList) 和 ProcessInfo(argList) 语法启动进程 WD 和 B。

每个进程都是一个简单的 C# 控制台应用程序。

【问题讨论】:

  • 你尝试过使用 try {} catch {} 吗?
  • 问题是 try catch 部分可以帮助您打开异常。我已经在这样做了,但它没有提供有关打开该进程的等待时间的信息。

标签: c# process


【解决方案1】:

Process.Start 返回一个布尔值(true 如果进程正确启动) 查看这个 MSDN link 的 Process.Start() 方法。

你的代码应该是这样的:

        Process B= new Process();

        try
        {
            B.StartInfo.UseShellExecute = false;
            B.StartInfo.FileName = "C:\\B.exe";
            B.StartInfo.CreateNoWindow = true;
            if (B.Start())
            {
              // Kill process A 
            }
            else
            {
               // Handle incorrect start of process B and do NOT stop A
            }

        }
        catch (Exception e)
        {
            // Handle exception and do NOT stop A
        }

【讨论】:

    【解决方案2】:

    Process.Start

    returns: true 如果进程资源已启动; false 如果没有启动新的进程资源(例如,如果重用现有进程)。

    我认为您应该只检查Process.Start 的返回值。如果是true,则可以关闭当前进程。

    根据你使用的重载,如果它也失败了,返回值可能是null。

    【讨论】:

      猜你喜欢
      • 2019-05-13
      • 2013-09-17
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多