C# Process.Start()是同步的吗?

C# Process.Start()是同步的吗?,c#,asynchronous,process,C#,Asynchronous,Process,我有这样一个代码: ProcessStartInfo psi= new ProcessStartInfo(...); Process process = Process.Start(psi); Application.Current.Shutdown(); 即使如此,流程仍有应用程序的流程信息(我有日志),在极少数情况下,生产计算机上的流程根本没有打开 正如我现在所说,Process.Start()是同步的,如果它返回一个值,则必须有一个正在运行的进程 我得到的另一个信息是,真正的过程也是sh

我有这样一个代码:

ProcessStartInfo psi= new ProcessStartInfo(...);
Process process = Process.Start(psi);
Application.Current.Shutdown();

即使如此,
流程
仍有应用程序的流程信息(我有日志),在极少数情况下,生产计算机上的流程根本没有打开

正如我现在所说,Process.Start()是同步的,如果它返回一个值,则必须有一个正在运行的进程

我得到的另一个信息是,真正的过程也是shell过程


有人知道问题出在哪里吗?

进程是IO工件,所以在启动它和实际打开它之间总是有一些延迟

当然,这种延迟取决于运行代码的具体机器

所以,就像一个解决方案,你可以

  • 或者将主线程睡眠一段时间,直到
    p
    进程打开

  • 或者关闭主线程,仅当从(比如)某个计时器中,您能够在已经运行的操作系统进程列表中找到所需的
    p
    进程时


第二个,我认为是更好的解决方案。

我不明白你在代码下面想说什么。我想他是说,虽然应用程序日志显示进程不为空,但有时他看不到操作系统中出现的进程“进程根本没有打开。”-你确定吗?或者可能是进程启动并立即关闭,而不显示任何有关该事实的信息?事实上,您没有向我们显示足够的代码,我们无法帮助您。新进程没有打开,因为它启动时我有日志写入,但没有日志写入。这并不意味着什么。一个进程可以很容易地正确启动,但不能运行到您编写的创建日志项的任何代码中。在此之前,它可能会崩溃,您将不知道这一点,因为您没有做任何事情来记录进程。ExitCode。