我正在用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. SDL_SetVideoMode掛起進程
- 4. 在xmltable中插入時掛起進程
- 5. wkhtmltopdf進程在Java中掛起
- 6. 在C++中掛起並恢復主線程for Windows
- 7. 程序在使用進程時掛起
- 8. Application.Restart使進程掛起
- 9. Gulp子進程掛起
- 10. WTSRegisterSessionNotification導致進程掛起
- 11. NHibernate SQL Server掛起進程
- 12. java進程在啓動時掛起
- 13. 父進程在調用waitpid後掛起
- 14. 從Scala中刪除掛起的進程
- 15. 在applet中掛起線程
- 16. C++程序在執行ntdll.dll時掛起
- 17. 定時器掛起主線程
- 18. WH_KEYBOARD_LL僅在我的進程主線程中掛鉤
- 19. Socket編程C/C++ - recv函數掛起?
- 20. 如何在Linux中調試多線程掛起進程?
- 21. 帶PostgreSQL的NodeJs DataPumps:進程掛起
- 22. Java ProcessBuilder:結果進程掛起
- 23. 確定進程是否已掛起
- 24. 扭曲掛起,而守護進程
- 25. Python子進程通信掛起
- 26. avconv:保存MP4進程掛起
- 27. SQL Server - 掛起進程 - SPID查詢
- 28. 內核調試掛起進程?
- 29. 疑難解答Oracle - 掛起的進程
- 30. 管輸入到掛起的進程
更好使用'notePad.WaitForExit()',因爲你不會吃100%的CPU核心在等待這樣的旋轉;) – 2012-02-15 02:38:55
是的,我必須承認在一個while循環中旋轉並不是最優雅的解決方案,哈哈。謝謝你的提示。 – 2012-02-15 02:53:10