在.NET应用程序中运行Process.Start时,我们等待进程启动或失败,而不是继续执行调用程序/方法 - 是否正确?.NET Process.Start方法在哪一点返回调用方法?
1
A
回答
2
请阅读http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx。过程启动后,Process.Start将返回。如果你想等到进程退出,那么你需要调用WaitForExit。
请注意,如果您重定向StandardOutput和StandardError并调用WaitForExit,则存在潜在的死锁问题。如果您没有读取StandardOutput和StandardError的流,那么缓冲区可以填充并且进程将被阻塞。因此WaitForExit永远不会返回。通常的解决方案是对线程池线程中的StandardOutput和StandardError调用ReadToEnd,并在主线程上调用WaitForExit。
0
一旦Process.Start启动的应用程序启动(或启动失败),控制权就会返回到您的应用程序。
相关问题
- 1. JUnit调用调用另一个方法的方法返回nullPointerException
- 2. 通过调用它的方法返回从方法的观点
- 3. 方法调用和返回
- 4. 如何用另一种方法调用方法返回?
- 5. 简单的方法来知道哪些方法在.NET Framework中返回null
- 6. direcrtshow:调用Renderstream方法返回-2147024809
- 7. 当方法返回true时,方法会一直返回false吗?
- 8. 使用返回在另一种方法
- 9. 在另一种方法中使用getter方法的返回值
- 10. 做一些方法返回
- 11. 从不同的方法参数中调用返回方法
- 12. 从Web方法中调用异步方法并获取返回
- 13. PHP:调用返回类的方法
- 14. 调用返回函数的方法
- 15. 调用返回Int32内部的方法
- 16. Java界面 - 返回方法调用
- 17. 调用函数或返回主方法
- 18. 调用方法不返回字符串
- 19. Ruby:从调用方法返回
- 20. 调用方法永不返回
- 21. AJAX调用C#方法没有返回
- 22. 查看方法调用的返回值
- 23. 返回按钮上的调用方法
- 24. SignalR:返回值的调用方法
- 25. 返回值的调用方法
- 26. 把手方法调用不返回值
- 27. 接受方法返回空 - C#.NET MVC
- 28. .NET的动态返回类型方法
- 29. 如何发送回调方法,另一个回调方法
- 30. .NET方法调用拦截
在调用Process.Start()之后调用Process.GetProcessById(PID)是否安全?我的意思是,我保证GetProcessById会一直返回正确的结果吗?当然,假设启动过程在启动 – Adi 2012-08-22 10:05:18
道歉后没有立即关闭,我现在只看到了这条评论。迟到1年仍然有用,对吧?无论如何,Process.Start之后的GetProcessById应该没问题,但是现在有一个竞争条件,并且在调用GetProcessById之前依赖于该过程尚未完成。在调用GetProcessById之前,它可能会完成而不会失败。但更重要的是,如果您使用Process.Start启动流程,它会将Process对象返回给您 - 您无需从GetProcessById中获取它。在这种情况下,您仍然可以在Process对象完成后询问它们(例如退出代码)。 – 2013-10-14 00:04:57