我有一个使用form.showDialog()显示的表单,在主表单中有一个线程,它每隔x秒发送一条消息。我注意到,当我在刚刚打开的窗口中使用ShowDialog打开新表单时,线程并没有运行。即使在使用ShowDialog的情况下,如何让它继续运行?
代码:
codeshowAllScriptsWindow window = new showAllScriptsWindow(this);
window.Show();在mainform中,我有一个线程,它一直在发送消息,但由于显示对话框而停止。请注意,当我使用show()时,它不会发生。
发布于 2011-03-30 04:11:36
ShowDialog()是一个阻塞调用。线程实际运行时,它正忙于为对话框传递消息循环。这与在程序的主线程上发生的事情没有什么不同。
这样做是非常不明智的,该对话框与应用程序中的其余窗口没有Z顺序关系。一个典型的不幸是,它可以消失在另一个窗口后面,但用户找不到它的好方法。改为使用Control.BeginInvoke在UI线程上创建对话框。这也确保了你的线程保持“运行”。
https://stackoverflow.com/questions/5478212
复制相似问题