C#windows应用程序don';不要等待子进程
我正在使用以下命令启动子进程:C#windows应用程序don';不要等待子进程,c#,.net,process,C#,.net,Process,我正在使用以下命令启动子进程: var proc = new Process { StartInfo = new ProcessStartInfo { FileName = _pathChildProc, Arguments = sb.ToString(), UseShellExecute = false, //CreateNoWindow = false } }; proc.Start(); 我使用“UseSh
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = _pathChildProc,
Arguments = sb.ToString(),
UseShellExecute = false,
//CreateNoWindow = false
}
};
proc.Start();
我使用“UseShellExecute=false”,这样就可以直接创建进程,而无需中间控制台 我只想启动子进程并忘掉它,这样我就可以在子进程退出之前退出主应用程序。也可能是我从一个主应用程序实例创建了更多的子进程,我不想等待它们全部完成 问题是,在主应用程序中,即使在主线程完成之后,应用程序仍在等待子进程完成 如何指定我不想等待子进程 编辑
我刚刚创建了两个测试控制台应用程序:“MainApp”、“ChildApp”。MainApp创建ChildApp,如上所述 现在,有趣的是:如果您在启动MainApp时附加了调试器(F5),那么它不会等待子应用,但是如果您在运行MainApp时没有调试器(Ctrl+F5),那么它会等待子应用 主应用程序:
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();
}
}
}
儿童应用程序:
using System.Threading;
namespace ChildProc
{
class Program
{
static void Main(string[] args)
{
Thread.Sleep(15000);
}
}
}
我不能复制这个。我刚刚尝试了两个简单的应用程序,效果很好。你确定没有其他地方的代码等待
proc
?我刚刚创建了两个测试控制台应用程序:“MainApp”、“ChildApp”。MainApp创建ChildApp,如上所述。有趣的是:如果你在启动MainApp时附加了调试器(F5),那么它不会等待子应用,但是如果你在运行MainApp时没有调试器(Ctrl+F5),那么它会等待子应用。因此,如果你有完整的程序来演示这个问题,请将它们包含在你的问题中。(我有完整的程序证明没有问题…@Jon Skeet。我粘贴的代码是否也适用于您?这基本上与我的代码相同-但我有更多的日志记录来显示所有事情发生的时间。我在没有调试器的情况下运行(仅从控制台)。