2013-02-19 47 views
1

我有這樣的代碼:是Process.Start()同步嗎?

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

即使如此process讓應用程序(我有日誌)在極少數情況下生產計算機的過程中完全不開盤的過程信息。

正如我現在Process.Start()是同步的,如果它返回一個值必須有一個正在運行的進程。

我擁有的另一個信息是,真正的過程也是殼程序。

有沒有人有一個想法是什麼問題?

+2

我不明白你直接在代碼下面說什麼。 – 2013-02-19 08:22:39

+1

我認爲他的意思是說雖然應用程序日誌顯示進程不爲空,但有時他看不到進程出現在操作系統 – 2013-02-19 08:26:02

+0

「進程完全沒有打開」。 - 你確定嗎?或者可能是過程開始並立即關閉,而不顯示關於該事實的任何信息?事實上,你沒有向我們展示足夠的代碼來幫助你。 – 2013-02-19 08:27:42

回答

2

進程是IO工件,所以總是有一些延遲,在你啓動它和它實際打開之間。

這個延遲當然取決於具體的機器,你在哪裏運行你的代碼。

所以,像一個解決方案,您可以

  • 或睡覺主線程,直到該p過程中打開,時間

  • 或關閉主線程一些量,只有當從(比方說)某些計時器,您可以在已運行的OS進程列表中找到所需的p進程。

第二,我認爲,是一個更好的解決方案。