【发布时间】:2013-10-03 07:28:02
【问题描述】:
我正在开发一个 Windows 窗体应用程序,我需要在其中编辑某些配置文件。现在,当用户单击编辑选项时,我想在一个简单的记事本编辑器中启动这些配置文件。一旦启动,我想停止我的应用程序。只有当用户关闭记事本编辑器时,我才想停止我的应用程序。这是怎么做到的?
我看过这些问题,但答案有很多问题。 (我读了那里给出的cmets。)
【问题讨论】:
我正在开发一个 Windows 窗体应用程序,我需要在其中编辑某些配置文件。现在,当用户单击编辑选项时,我想在一个简单的记事本编辑器中启动这些配置文件。一旦启动,我想停止我的应用程序。只有当用户关闭记事本编辑器时,我才想停止我的应用程序。这是怎么做到的?
我看过这些问题,但答案有很多问题。 (我读了那里给出的cmets。)
【问题讨论】:
您可以使用 Exited-Event:
try
{
Process myProcess = new Process();
myProcess.StartInfo.FileName = "notepad.exe";
myProcess.StartInfo.Arguments = @"C:\PathToYourFile";
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new EventHandler(myProcess_Exited);
myProcess.Start();
}
catch (Exception ex)
{
//Handle ERROR
return;
}
// Handle Exited event and display process information.
private void myProcess_Exited(object sender, System.EventArgs e)
{
eventHandled = true;
Console.WriteLine("Exit time: {0}\r\n" +
"Exit code: {1}\r\nElapsed time: {2}", myProcess.ExitTime, myProcess.ExitCode, elapsedTime);
}
【讨论】:
var process = System.Diagnostics.Process.Start("yourfile.txt");
process.WaitForExit();
这将打开您的文件。但是,有时该过程将为空,您将无法等待退出。为什么?
Process.Start 方法
返回值类型:System.Diagnostics.Process
一个新的流程组件 与进程资源相关联,如果没有进程,则为 null 资源已启动(例如,如果现有进程被重用)。
【讨论】:
您可以发起Process和WaitForExit:
Process pr = Process.Start("Notepad");
pr.WaitForExit();
【讨论】: