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

标签 c# asynchronous process

我有这样的代码:

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

即使如此,进程也有应用程序的进程信息(我有日志),在极少数情况下,在生产计算机上该进程根本不会打开。

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

我掌握的另一个信息是,真正的进程也是shell进程。

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

最佳答案

进程是 IO 工件,因此在启动它和实际打开之间总是存在一些延迟。

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

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

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

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

    <

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

关于c# - Process.Start() 是同步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14952821/

相关文章:

c# - 将 JS 数组 = {} 发送到 C# (WebMethod)

c# - 怎么求两个三角形相交的面积

javascript - 使用携带另一个数组的对象异步循环数组

docker - 在 docker 容器内运行时, `strace -f` 的工作方式是否不同?

c# - 继承了一个具有 60,000 个 url 重定向的 ASP.NET 网站应用程序

c# - 以编程方式为多个字节上的相关位创建位掩码

javascript - 单线程如何处理JavaScript中的异步代码

java - apache asyncClient 是实际的异步还是它在幕后使用线程

windows - 是否存在 ReadProcessMemory 失败的情况?

python - 为什么这种Python多线程方法比单线程方法需要更多的时间来解决相同的任务?