【问题标题】:Console application fire a process then close itself控制台应用程序触发一个进程,然后自行关闭
【发布时间】:2010-08-19 13:05:20
【问题描述】:

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

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

有没有办法在 .NET 中构建这种即发即弃的过程?

谢谢, 南多

【问题讨论】:

    标签: c# .net multithreading process


    【解决方案1】:

    查看Process 对象。您只需像这样调用 Process.Start :

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

    【讨论】:

      【解决方案2】:

      是的,我正在这样做,但似乎进程没有启动...

      我做了一个小助手类,叫作Updater:

      Updater.CheckUpdates() 
      

      --> 启动一个调用“updater.exe -check”的进程,并且该进程有效(进程完成后,控制权返回到我的主应用程序)。我评估进程的返回代码,并在必要时设置 Updater.UpdatesAvalilable 布尔标志。

      Updater.ApplyUpdates()
      

      --> 启动一个调用“updater.exe -update”的进程来完成更新工作。

      所以,我的代码是这样的:

          Updater.CheckUpdates();
          if (Updater.UpdatesAvailable)
          {
              Updater.ApplyUpdates();
              System.Environment.Exit(0);
          }
      

      Updater.ApplyUpdates() 中的进程永远不会运行。 我知道,不是优雅的代码,但我不知道如何实现我的目标。 :-)

      谢谢! 南多

      【讨论】:

        【解决方案3】:

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

        只是为了让所有人都知道:我的流程声明现在是这样的:

                    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();
        

        谢谢大家! 南多

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多