首页 新闻 会员 周边

Process.Exited 提前响应!

0
悬赏园豆:15 [已解决问题] 解决于 2008-08-28 11:41
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl55CSharp" space="preserve"><font size="2">使用process.Exited事件时,如果通过infopath打开xml文件<font color="#ff0000">,exited事件会提前触发。</font>如以下代码,打开1.xml时就显示对话框。<br> <span style="color: blue;">private</span> Process myProcess = <span style="color: blue;">new</span> Process();<br> <span style="color: blue;">public</span> <span style="color: blue;">void</span> PrintDoc(<span style="color: blue;">string</span> fileName)<br> {<br> myProcess.StartInfo.FileName =<font color="#ff0000">@"c:\1.xml"</font>;<br> myProcess.EnableRaisingEvents = <span style="color: blue;">true</span>;<br> myProcess.Exited += <span style="color: blue;">new</span> EventHandler(myProcess_Exited);<br> myProcess.Start();<br> }<br><br> <br> <span style="color: blue;">private</span> <span style="color: blue;">void</span> my<font color="#ff0000">Process_Exited</font>(object sender, System.EventArgs e)<br> {<br> messagebox.show("程序退出"); <br> }</font><br>但是把<font><font size="2"><font color="#ff0000">@"c:\1.xml"</font>换成</font></font><font><font size="2"><font color="#ff0000">@"c:\1.txt"</font>就没有问题!<br>是不是因为infopath不是windows自带程序的原因啊!急求答案啊。<br></font></font><br></pre>
问题补充: 发送问题时,第一行没有换行,补充如下: 使用process.Exited事件时,如果通过infopath打开xml文件,exited事件会提前触发。如以下代码,打开1.xml时就显示对话框。
apan的主页 apan | 初学一级 | 园豆:190
提问于:2008-08-27 15:29
< >
分享
最佳答案
0
你采用的是用默认程序打开文档的方法,如果打开1.txt,一般默认是用 notepad打开文档,notepad是一个单独进程,notepad关闭后程序退出。 如果打开 1.xml, 默认是用 IE 打开, IE 的工作方式比较特殊,是异步方式打开文档,文档打开后,对应的那个程序(可能是一个线程,具体我没有仔细研究)就退出了,所以有了你说的提前退出的问题。 解决这个问题,两种办法, 1、将 xml 文件的默认打开方式改为一个非浏览器的程序,如notepad,word等。 2、不要用默认方式运行文档, 可按照下面方式修改。 static public void PrintDoc(string fileName) { myProcess.StartInfo.FileName = @"notepad"; myProcess.StartInfo.Arguments = @"c:\1.xml"; myProcess.EnableRaisingEvents = true; myProcess.Exited += new EventHandler(myProcess_Exited); myProcess.Start(); }
eaglet | 专家六级 |园豆:17139 | 2008-08-28 07:49
其他回答(1)
0
这个问题应该不是Exited事件提前触发,因为Exited事件发生时,表示进程终止或关闭。 我想是换成1.xml时,前面的代码执行中出现了问题,而导致进程终止或关闭,才会触发Exited事件的。
TerryLee | 园豆:3300 (老鸟四级) | 2008-08-27 20:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册