2012-02-15 68 views
1

我正在用C#開發一個應用程序。作爲錯誤條件的一部分,我想在記事本中爲用戶編輯一個文件(同時暫停主進程)。我可以使用Process.Start啓動文件。我無法弄清楚的是如何暫停主應用程序,直到用戶保存或退出記事本文件。除了Process.start以外,還有什麼可以用來啓動主進程中的Notepad.exe或其他我可以使用的技巧。我覺得有一個簡單的解決方案,我可以忽略。提前致謝。在C#中掛起主進程#

回答

5

您可以使用Process.WaitForExit來阻止主程序,直到記事本關閉。

使其阻塞,直到文件被保存或關閉會有點棘手。

這裏的一個選擇是有一個ManualResetEvent,然後等待它。然後,您可以聽取Process.Exited(在設置Process.EnableRaisingEvents之後),並使用它在等待句柄上調用Set()。這將處理讓您的代碼在進程退出時繼續。

爲了處理正在保存的文件,單獨的FileSystemWatcher可以監視文件本身的保存(文件更改)。如果文件保存/更改,您可以通過調用Set()繼續。

0

我相信你應該可以做這樣的事情。

var notePad = new Process { StartInfo = { FileName = "notepad.exe", Arguments = "newfile.txt" } }; 
     notePad.Start(); 

     while(!notePad.HasExited) 
     { 

     } 

     MessageBox.Show("Done."); 

「完成」。消息框不應顯示,直到您關閉記事本。然後,再次,我的答案是不那麼hackish。

+3

更好使用'notePad.WaitForExit()',因爲你不會吃100%的CPU核心在等待這樣的旋轉;) – 2012-02-15 02:38:55

+0

是的,我必須承認在一個while循環中旋轉並不是最優雅的解決方案,哈哈。謝謝你的提示。 – 2012-02-15 02:53:10