在消息循环退出以后,MessageBox就不能显示了吗?

fguyewtr 2015-06-27 05:14:12
如题,我新建一个winform应用程序,拖入一个button,在button的OnClick响应函数里面Application.Exit()。
然后在Program.cs主函数里面:

static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
MessageBox.Show("Application still running"); //为什么这个不显示
for (; ;)
{
ThreadPool.QueueUserWorkItem(o => { MessageBox.Show("Form exits"); });
Thread.Sleep(1000);
}
}
}

运行,发现点击了按钮以后,并不会弹出一个消息框显示"Application still running",而只是会每隔一秒钟弹出"Form exists”消息框。为什么我想要的那个不能显示出来?
...全文
205 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2015-06-30
  • 打赏
  • 举报
回复
Application.ApplicationExit += new EventHandler(this.OnApplicationExit); void EventHandler(this.OnApplicationExit(object sender, EventArgs args) { MessageBox.Show("Application still running"); //为什么这个不显示 for (; ;) { ThreadPool.QueueUserWorkItem(o => { MessageBox.Show("Form exits"); }); Thread.Sleep(1000); } }
fguyewtr 2015-06-30
  • 打赏
  • 举报
回复
引用 9 楼 lovelj2012 的回复:
Application.Exit();
停止UI线程上的消息循环,并关闭应用程序窗口
MessageBox.Show("Application still running")
隶属当前UI线程,所以不会弹出。
这个解释是我想要的,谢谢!
江南小鱼 2015-06-30
  • 打赏
  • 举报
回复
Application.Exit();
停止UI线程上的消息循环,并关闭应用程序窗口
MessageBox.Show("Application still running")
隶属当前UI线程,所以不会弹出。
  • 打赏
  • 举报
回复
你写的和你所要实现的完全不一样,你for(;;)每1秒显示一次Form exits,按运行顺序肯定是先显示Application still running 然后继续执行你的for循环中的Form exits,如果要想再次显示Application still running 要不就加break,或者在for循环中加入,你的代码根不能不是你想要表达的
  • 打赏
  • 举报
回复
你写的和你所要实现的完全不一样,你for(;;)每1秒显示一次Form exits,按运行顺序肯定是先显示Application still running 然后继续执行你的for循环中的Form exits,如果要想再次显示Application still running 要不就加break,或者在for循环中加入,你的代码根不能不是你想要表达的
  • 打赏
  • 举报
回复
关闭要处理的东西就不能好好地写在关闭时间里面的……
江南小鱼 2015-06-30
  • 打赏
  • 举报
回复
撸主搞的这是神马东东啊~
fguyewtr 2015-06-29
  • 打赏
  • 举报
回复
这是什么原因造成的呢?
fguyewtr 2015-06-28
  • 打赏
  • 举报
回复
求回答.........
fguyewtr 2015-06-27
  • 打赏
  • 举报
回复
但是如果我退出VS,等很长时间,再次运行这个程序,有时候就能弹出"Application still running"。 我结束这个进程,再次运行,这个就又不弹出了。看起来是个小概率事件似的。

110,535

社区成员

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

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

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