在C#中暂停主进程

时间:2012-02-15 02:28:41

标签: c# process

我正在用C#开发一个应用程序。作为错误条件的一部分,我想在记事本中调出一个文件供用户编辑(同时暂停主进程)。我可以使用Process.Start来启动文件。我无法弄清楚的是如何在用户保存或退出记事本文件之前暂停主应用程序。除了Process.start之外,我还可以使用它来启动主进程中的Notepad.exe或其他一些我可以使用的技巧。我觉得有一个简单的解决方案我可以忽略它。提前谢谢。

2 个答案:

答案 0 :(得分:5)

您可以使用Process.WaitForExit来阻止主程序,直到记事本关闭。

阻止文件保存或关闭会有点麻烦。

这里的一个选择是拥有一个ManualResetEvent,并等待它。然后,您可以侦听Process.Exited(在设置Process.EnableRaisingEvents之后),并使用此方法在等待句柄上调用Set()。这将处理允许代码在进程退出时继续。

为了处理正在保存的文件,单独的FileSystemWatcher可以监视文件本身的保存(文件更改)。如果文件保存/更改,您可以通过调用Set()来继续。

答案 1 :(得分:0)

我相信你应该可以做这样的事情。

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

        while(!notePad.HasExited)
        {

        }

        MessageBox.Show("Done.");

“完成”。在关闭记事本之前,消息框不应显示。再说一遍,我上面的答案不那么苛刻了。