C# 控制台应用程序启动进程,然后关闭自身

C# 控制台应用程序启动进程,然后关闭自身,c#,.net,multithreading,process,C#,.net,Multithreading,Process,我正在为我的应用程序编写一个小的更新程序。 我的流程如下所示: app.exe->调用进程(updater.exe)->app.close() 然后,更新程序检查应用程序是否已关闭,然后覆盖app.exe和其他附属程序集 所以我需要这样做:启动我的C#exe应用程序,启动updater.exe进程,然后关闭应用程序,但不关闭子进程 有没有一种方法可以在.NET中构建这种“火与忘”过程 谢谢,, 南多看看这个物体。您只需调用流程。按如下方式开始: System.Diagnostics.Proces

我正在为我的应用程序编写一个小的更新程序。 我的流程如下所示: app.exe->调用进程(updater.exe)->app.close() 然后,更新程序检查应用程序是否已关闭,然后覆盖app.exe和其他附属程序集

所以我需要这样做:启动我的C#exe应用程序,启动updater.exe进程,然后关闭应用程序,但不关闭子进程

有没有一种方法可以在.NET中构建这种“火与忘”过程

谢谢,, 南多看看这个物体。您只需调用流程。按如下方式开始:

System.Diagnostics.Process.Start("updater.exe");

是的,我正在这么做,但这个过程似乎还没有开始

我创建了一个名为Updater的小助手类:

Updater.CheckUpdates() 
-->启动一个调用“updater.exe-check”的进程,该进程可以工作(进程完成后,控制返回到我的主应用程序)。我评估进程的返回代码,并在必要时设置Updater.updatesavaliable bool标志

Updater.ApplyUpdates()
-->启动一个名为“updater.exe-update”的进程,该进程执行更新工作

我的代码是这样的:

    Updater.CheckUpdates();
    if (Updater.UpdatesAvailable)
    {
        Updater.ApplyUpdates();
        System.Environment.Exit(0);
    }
            Process process = new Process();
        process.EnableRaisingEvents = true;

        process.StartInfo = new ProcessStartInfo();
        process.StartInfo.Arguments = "-update";
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.ErrorDialog = false;
        process.StartInfo.FileName = "updater.exe";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();

        process.Start();
Updater.ApplyUpdates()中的进程从未运行。 我知道,这不是优雅的代码,但我不知道如何实现我的目标。:-)

谢谢大家!! 南多

大家早上好。 看来我找到了一个办法让它发挥作用。 在我的助手类中,我连接事件来获取stdIO和stdError,只是为了记录一些东西;除去这些,我就完成了我的工作:进程启动和主出口!:-)

让大家都知道:我的流程声明如下:

    Updater.CheckUpdates();
    if (Updater.UpdatesAvailable)
    {
        Updater.ApplyUpdates();
        System.Environment.Exit(0);
    }
            Process process = new Process();
        process.EnableRaisingEvents = true;

        process.StartInfo = new ProcessStartInfo();
        process.StartInfo.Arguments = "-update";
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.ErrorDialog = false;
        process.StartInfo.FileName = "updater.exe";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();

        process.Start();
谢谢大家!! 南多