C# Process.WaitForExit();运行时界面锁死,怎么解决?

zgkydx112 2014-03-13 12:53:46

程序运行到Process.WaitForExit();时,程序的界面就锁死,这个要怎么解决啊?
        private void button4_Click(object sender, EventArgs e)
{
#region 打开外部exe程序
Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = textBox3.Text;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.EnableRaisingEvents = true;
myProcess.Start();
#endregion

//myProcess.StandardOutput.ReadToEnd();
//myProcess.BeginOutputReadLine();
myProcess.WaitForExit();
}

...全文
2520 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgkydx112 2014-03-13
  • 打赏
  • 举报
回复
WaitForExit ()()() 重载用于使当前线程处于等待状态,直到关联的进程终止。 此方法指示 Process 组件无限期地等待该进程退出。 这可能会导致应用程序停止响应。例如,如果对有用户界面的进程调用 CloseMainWindow,并且该进程被编写为从不进入其消息循环,则可能不处理向操作系统发出的终止关联进程的请求。
hudsonhuang 2014-03-13
  • 打赏
  • 举报
回复
顶,不用task也可以,直接返回一个process,如果按取消,就直接process.kill就是了
hudsonhuang 2014-03-13
  • 打赏
  • 举报
回复
用task咯
zgkydx112 2014-03-13
  • 打赏
  • 举报
回复
@hudsonhuang 这样程序的主界面是关闭不了的,需要等外部程序运行完了,才可以对主界面进行操作,我的意思是在外部程序运行的过程中,能够对主界面进行操作,例如添加一个推出的按钮,按下的时候同时关闭外部程序和程序,但现在的问题是运行到myProcess.WaitForExit();主界面就锁死了,exited这个事件很简单的啊
hudsonhuang 2014-03-13
  • 打赏
  • 举报
回复
myProcess.WaitForExit(); 这里一句等待,必须挂起主线程(所谓的UI)啊。。。。 如果你要等待完成了做其他操作的话,用exited这个事件就是了 如果你不需要等待的话,加这句来干嘛?
zgkydx112 2014-03-13
  • 打赏
  • 举报
回复
@hudsonhuang 假设外部程序的运行时无限时间的,我仍要对程序的界面进行操作
zgkydx112 2014-03-13
  • 打赏
  • 举报
回复
hudsonhuang 2014-03-13
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.aspx exited事件,再做处理
zgkydx112 2014-03-13
  • 打赏
  • 举报
回复

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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