C# 进程的可靠性。Start()然后使用C关闭当前进程#

C# 进程的可靠性。Start()然后使用C关闭当前进程#,c#,process,C#,Process,我有一个C#winform应用程序a,需要使用进程启动另一个winform应用程序B。启动然后关闭自身。源代码如下所示: using(Process updater = new Process()) { updater.StartInfo.FileName = "B.exe"; updater.Start(); } this.Close(); 但我有时注意到A在不运行B的情况下自动关闭 我想知道的是如何确保B.exe在关闭A之前成功启动 顺便说一句,我的目标框架应该是3.5和4

我有一个C#winform应用程序a,需要使用进程启动另一个winform应用程序B。启动然后关闭自身。源代码如下所示:

using(Process updater = new Process())
{
    updater.StartInfo.FileName = "B.exe";
    updater.Start();
}
this.Close();
但我有时注意到A在不运行B的情况下自动关闭

我想知道的是如何确保B.exe在关闭A之前成功启动

顺便说一句,我的目标框架应该是3.5和4


提前谢谢

您可以检查流程是否已启动和响应:

        Boolean closeme = false;
        using (System.Diagnostics.Process updater = new System.Diagnostics.Process())
        {
            updater.StartInfo.FileName = "B.exe";
            if (updater.Start())
                while (!updater.HasExited)
                {
                    if (updater.Responding)
                    {
                        closeme = true;
                        break;
                    }
                    /* insert a timeout if process hangs */
                }
            if (updater.HasExited)
            {
                /* Do something else (updater.ExitCode)  */
            }

        }
        if (closeme)
            this.Close();

A
无法阻止
B
几乎立即退出。它不会不启动B(nit:这里可能会插入一些防病毒软件),因此您试图从错误的应用程序中解决问题。你需要找出B退出的原因。