是不是vs2010的bug

xiehua822 2015-01-07 03:31:36
在界面上有个按钮,调用外面的一个exe,弹出exe画面之后,再单击原来的那个按钮,接着关闭弹出的exe,这时exe又启动了。
这个是不是微软的bug. 以下是按钮事件。

this.button1.Click -= new System.EventHandler(button1_Click);
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = @"c:\WindowsFormsApplication3.exe";
process.StartInfo.Verb = "Open";
// process.EnableRaisingEvents = true; 加了此句也没用
// process.Exited += new EventHandler(proc_Exited);
process.Start();
process.WaitForExit();

process.Close();
process.Dispose();
this.button1.Click += new System.EventHandler(button1_Click);
...全文
672 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜鸟的挣扎 2017-03-09
  • 打赏
  • 举报
回复
加个全局变量bool OpenFormStatu = false; 就好了嘛, 点一下,判断窗口是否已经打开: 没有打开 -- 弹出窗口,OpenFormStatu = true; 打开-- 关闭窗口,OpenFormStatu = false;
zj_zwl 2017-03-09
  • 打赏
  • 举报
回复
听9楼的话.
xiehua822 2015-01-07
  • 打赏
  • 举报
回复
自已顶一下。
xiehua822 2015-01-07
  • 打赏
  • 举报
回复
刚刚试了一下,如果在waitforexit后,message.show一下,就不会弹出来exe了
xiehua822 2015-01-07
  • 打赏
  • 举报
回复
process.WaitForExit();的目的是想打开其它程序后,不能操作当前的调用系统。 我这例子是最简单的程序,就是一个form,一个按钮,按钮里面的事件就是上面的。我也发现一个规律,如果在最后设定断点。那它也不会重复调用exe. 所以搞不懂了
於黾 2015-01-07
  • 打赏
  • 举报
回复
然后当你关闭一个,就再弹出一个? 我想是因为这句话引起的: process.WaitForExit(); 代码会阻塞在这里,等待被调用的exe退出,正常来说界面应该处于假死状态才对 不知道你又用了什么办法让界面没有假死,按钮还可以点击,但是代码并没有运行,还在阻塞中,等你关闭了exe,代码重新往下执行,然后触发了按钮事件,于是又开启了一个exe
xiehua822 2015-01-07
  • 打赏
  • 举报
回复
是关闭了前一个exe,后一个才启动的
xiehua822 2015-01-07
  • 打赏
  • 举报
回复
只有一个调用进程(WindowsFormsApplication4) 和一个被调进程(WindowsFormsApplication3),不管点多次按钮都只有一个WindowsFormsApplication3
於黾 2015-01-07
  • 打赏
  • 举报
回复
点2次按钮后,先看进程里打底有几个exe被启动了,不要只看开启了几个窗口
於黾 2015-01-07
  • 打赏
  • 举报
回复
你先确定,是不是点了2次按钮,就弹出了2个exe 还是说等你关闭了前一个exe,后一个才启动的

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧