C#windows app不等待子进程

时间:2015-03-28 09:12:15

标签: c# .net process

我正在使用以下方式开始子进程:

var proc = new Process
{
    StartInfo = new ProcessStartInfo
    {
       FileName = _pathChildProc,
       Arguments = sb.ToString(),
       UseShellExecute = false,
       //CreateNoWindow = false
    }
};
proc.Start();

我正在使用“UseShellExecute = false”,因此无需中间控制台即可直接创建进程。

我只想启动子进程并忘记它,以便我可以在子进程退出之前退出主应用程序。也可以是我从一个主应用程序实例创建更多这些子进程,我不想等待所有这些进程完成。

问题是,即使主线程完成后,在主应用程序中,应用程序仍在等待,直到子进程完成。

如何指定我不想等待子进程?

修改

我刚刚创建了2个测试控件:“MainApp”,“ChildApp”。 MainApp如上所述创建ChildApp。

现在有趣的部分:如果启动附带调试器的MainApp(F5)而不是等待子应用程序,但是如果你运行没有调试器的MainApp(Ctrl + F5)而不是等待子。

MainApp:

    using System.Diagnostics;

    namespace TestDontWaitForChildProcess
    {
        class Program
        {
            static void Main(string[] args)
            {
                var proc = new Process
                {
                    StartInfo = new ProcessStartInfo
                    {
                        FileName = "abc\\Projects\\TestDontWaitForChildProcess\\ChildProc\\bin\\Release\\ChildProc.exe",
                        Arguments = "a",
                        UseShellExecute = false,
                        //CreateNoWindow = false
                    }
            };
            proc.Start();
        }
    }
}

ChildApp:

using System.Threading;

namespace ChildProc
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread.Sleep(15000);
        }
    }
}

0 个答案:

没有答案