如果启动新进程后如何让C#应用程序完成?

时间:2010-09-28 09:52:33

标签: .net process

我有一个生成.pdf文件的应用程序,并使用myProcess.start(pdfFileName)打开它; 。在Winfom应用程序中按钮上的单击事件的事件处理程序中调用此调用。

一切正常,除非我在Acrobat Reader启动后退出(alt-f4或使用右上角十字架)我的应用程序,我的应用程序不会停止:表格消失,但VS中的调试会话即使我已经退出Acrobat Reader,也不会停止。如果我在realese中编译和/或从Windows启动exe而不是从VS启动exe,那么beahaviour是相同的,然后我必须使用任务管理器终止进程。

我在文档中找不到任何内容,但我知道这一定是一个非常常见的问题吗?

谢谢, 云庭。

4 个答案:

答案 0 :(得分:2)

您需要挂钩ProcessExit event

myProcess.StartInfo.FileName = fileName;
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new EventHandler(myProcess_Exited);
myProcess.Start();

[...]

private void myProcess_Exited(object sender, System.EventArgs e) {
  Application.Exit();
}

答案 1 :(得分:0)

在应用程序关闭时运行的代码部分,例如退出事件,您可以终止该进程。见http://msdn.microsoft.com/en-us/library/05abh773(v=vs.71).aspx

答案 2 :(得分:0)

我刚刚使用Acrobat阅读器对其进行了测试,并且应用程序正常退出。您必须在循环中保留后台进程或线程。

答案 3 :(得分:0)

theProcess.EnableRaisingEvents = true;
theProcess.Exited +=  delegate(object sender, System.EventArgs e)
                                    { Application.Exit();  }
theProcess.Start();