我正在用C#開發一個應用程序。作爲錯誤條件的一部分,我想在記事本中爲用戶編輯一個文件(同時暫停主進程)。我可以使用Process.Start啓動文件。我無法弄清楚的是如何暫停主應用程序,直到用戶保存或退出記事本文件。除了Process.start以外,還有什麼可以用來啓動主進程中的Notepad.exe或其他我可以使用的技巧。我覺得有一個簡單的解決方案,我可以忽略。提前致謝。在C#中掛起主進程#
1
A
回答
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。
相關問題
- 1. 在C#中掛起進程#
- 2. 進程掛起在父進程中C
- 3. 進程掛起在waitFor()
- 4. 即使使用線程,啓動進程會掛起主進程
- 5. SDL_SetVideoMode掛起進程
- 6. 在xmltable中插入時掛起進程
- 7. wkhtmltopdf進程在Java中掛起
- 8. 在C++中掛起並恢復主線程for Windows
- 9. 程序在使用進程時掛起
- 10. strace修復掛起進程
- 11. Application.Restart使進程掛起
- 12. NHibernate SQL Server掛起進程
- 13. 進程掛起讀取
- 14. Python子進程.Popen掛起
- 15. WTSRegisterSessionNotification導致進程掛起
- 16. 掛起的進程,調試
- 17. Gulp子進程掛起
- 18. Python守護進程檢查進程是否在Linux中掛起
- 19. C++/boost :: thread程序在join_all後掛起並從主返回
- 20. 從Scala中刪除掛起的進程
- 21. java進程在啓動時掛起
- 22. 父進程在調用waitpid後掛起
- 23. javaw.exe進程在applet開始掛起
- 24. 在applet中掛起線程
- 25. rake db:migrate在主環境中掛起
- 26. C++程序在執行ntdll.dll時掛起
- 27. 定時器掛起主線程
- 28. WH_KEYBOARD_LL僅在我的進程主線程中掛鉤
- 29. 在主線程上導致在UI中掛起的IOS semaphore_wait_trap
- 30. Socket編程C/C++ - recv函數掛起?
更好使用'notePad.WaitForExit()',因爲你不會吃100%的CPU核心在等待這樣的旋轉;) – 2012-02-15 02:38:55
是的,我必須承認在一個while循環中旋轉並不是最優雅的解決方案,哈哈。謝謝你的提示。 – 2012-02-15 02:53:10