如何在C#中启动另一个应用程序?

Sur*_*esh 21 c# desktop-application launch

我有两个桌面应用程序.关闭第一个应用程序后,第一个应用程序将启动第二个应用程序.

完成第一次申请后如何开始第二次申请?

我的第一个应用创建一个单独的桌面

JP *_*oto 18

退出第一个应用程序时使用Process类.

var p = new Process();
p.StartInfo.FileName   = "notepad.exe";  // just for example, you can use yours.
p.Start();
Run Code Online (Sandbox Code Playgroud)


Cha*_* Im 17

您可以使用.NET的Process Class来启动其他人描述的流程.然后问题是什么时候打电话.

在大多数情况下,使用任何一个Form.ClosingForm.Closed事件似乎都是一个简单的选择.

但是,如果其他人可以处理该事件并且可以设置CancelEventArgs.Cancel为true,则可能不是这样做的正确位置.此外,Form.ClosingForm.Closed当事件将不会引发 Application.Exit()被调用.如果发生任何未处理的异常,我不确定是否会引发任何一个事件.(此外,您必须决定是否要在出现Application.Exit()或处理任何未处理的异常时启动第二个应用程序).

如果你真的想确保在第一个应用程序(App1)退出后启动第二个应用程序(App2),你可以玩一个技巧:

  1. 创建一个单独的应用程序(App0)
  2. App0启动App1
  3. App0等待App1退出Process.WaitExit()
  4. App0启动App2并退出

下面附带的示例控制台应用程序显示了一个非常简单的案例:我的示例应用程序首先启动记事本.然后,当记事本退出时,它会启动mspaint并退出.

如果要隐藏控制台,只需将"输出类型"属性从"控制台应用程序"设置为"项目属性"的"应用程序"选项卡下的"Windows应用程序"即可.

示例代码:

using System;
using System.Diagnostics;

namespace ProcessExitSample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {

                Process firstProc = new Process();
                firstProc.StartInfo.FileName = "notepad.exe";
                firstProc.EnableRaisingEvents = true;

                firstProc.Start();

                firstProc.WaitForExit();

                //You may want to perform different actions depending on the exit code.
                Console.WriteLine("First process exited: " + firstProc.ExitCode);

                Process secondProc = new Process();
                secondProc.StartInfo.FileName = "mspaint.exe";
                secondProc.Start();                

            }
            catch (Exception ex)
            {
                Console.WriteLine("An error occurred!!!: " + ex.Message);
                return;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)