我正在使用以下方式开始子进程:
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);
}
}
}