在.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. Java方法調用返回
- 4. 方法調用和返回
- 5. 調用方法和返回
- 6. 如何用另一種方法調用方法返回?
- 7. 簡單的方法來知道哪些方法在.NET Framework中返回null
- 8. 調用泛型方法並調用返回類型的方法
- 9. 哪種方法更好:Process.Start或直接調用DLL?
- 10. direcrtshow:調用Renderstream方法返回-2147024809
- 11. 我的方法中的「返回」在調用方法時不返回值
- 12. C#.NET Process.Start()在運行快捷方式時返回null
- 13. 當方法返回true時,方法會一直返回false嗎?
- 14. EJB調用哪個以後調用另一個EJB的方法 - >返回null
- 15. 使用返回在另一種方法
- 16. 在另一種方法中使用getter方法的返回值
- 17. Mockito可以在調用方法後返回一個方法的參數嗎?
- 18. .NET的動態返回類型方法
- 19. 接受方法返回空 - C#.NET MVC
- 20. GetProperty方法返回null C#.Net
- 21. 在同一方法內調用方法?
- 22. .NET方法調用攔截
- 23. 從.NET調用C++方法
- 24. 從odoo調用.net方法
- 25. 做一些方法返回
- 26. 方法,返回一會兒
- 27. NSInvocationOperation init從類方法返回nil調用實例方法
- 28. 調用方法後快速返回對象項目的方法?
- 29. 從Web方法中調用異步方法並獲取返回
- 30. JSF:方法返回對象的調用方法
在調用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