首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用form.ShowDialog()时,mainform中的线程无法工作

在使用form.ShowDialog()时,mainform中的线程无法工作
EN

Stack Overflow用户
提问于 2011-03-30 04:01:25
回答 4查看 4.1K关注 0票数 2

我有一个使用form.showDialog()显示的表单,在主表单中有一个线程,它每隔x秒发送一条消息。我注意到,当我在刚刚打开的窗口中使用ShowDialog打开新表单时,线程并没有运行。即使在使用ShowDialog的情况下,如何让它继续运行?

代码:

代码语言:javascript
运行
复制
codeshowAllScriptsWindow window = new showAllScriptsWindow(this); 
window.Show();

在mainform中,我有一个线程,它一直在发送消息,但由于显示对话框而停止。请注意,当我使用show()时,它不会发生。

EN

Stack Overflow用户

回答已采纳

发布于 2011-03-30 04:11:36

ShowDialog()是一个阻塞调用。线程实际运行时,它正忙于为对话框传递消息循环。这与在程序的主线程上发生的事情没有什么不同。

这样做是非常不明智的,该对话框与应用程序中的其余窗口没有Z顺序关系。一个典型的不幸是,它可以消失在另一个窗口后面,但用户找不到它的好方法。改为使用Control.BeginInvoke在UI线程上创建对话框。这也确保了你的线程保持“运行”。

票数 4
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5478212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档