【问题标题】:How to prevent a process started by Process.Start() from exiting when my app exits?当我的应用程序退出时,如何防止由 Process.Start() 启动的进程退出?
【发布时间】:2014-06-20 14:12:55
【问题描述】:

我的方法...

private static void RunAndExit(string command)
{
    var processInfo = new ProcessStartInfo
    {
        FileName = "cmd.exe",
        Arguments = "/c " + command,
        CreateNoWindow = false,
        UseShellExecute = true,
        RedirectStandardError = false,
        RedirectStandardOutput = false
     };
    }

我希望由 RunAndExit() 启动的进程在包含此方法的应用程序退出后继续运行。感谢您的帮助!

【问题讨论】:

  • ops 我怀疑由于 Windows 体系结构你能做到这一点
  • 你是怎么开始的?
  • 父应用是什么类型的应用?控制台还是 GUI?
  • 子进程没有退出,因为它的父进程退出了。它可能正在退出,因为它的标准输入和输出流开始产生错误。
  • 我现在意识到 vstest.console 是问题的一部分。此代码是单元测试的一部分。如果我通过 vstest.console.exe(MSTest 的替代品)运行单元测试,则当 vstest.console 退出时,该进程将消失。但是,如果我从 Visual Studio 测试资源管理器运行此测试,则在测试完成或关闭 Visual Studio 时它都不会消失。

标签: c# process process.start


【解决方案1】:

只要您真正开始新流程,您的代码就已经实现了这一点。您错过了对Process.Start() 的呼叫。

private static void RunAndExit(string command)
{
    var processInfo = new ProcessStartInfo
    {
        FileName = "cmd.exe",
        ....
    };
    Process.Start(processInfo); // add this line
}

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2010-09-21
    • 2017-10-23
    相关资源
    最近更新 更多