我可以在子线程上调用MessageBox.Show
而不必担心跨线程异常吗?我知道表面上的答案是“尝试并找出来”,这是我成功完成的,但我注意到Windows 7似乎对提高跨线程异常的要求不如Windows XP。
那么,是否记录了从子线程可以安全的任何地方?
答案 0 :(得分:7)
如果您在没有所有者窗口的情况下致电MessageBox.Show("text")
,则可以保存。
如果您拨打MessageBox.Show
,请MessageBox.Show(this,"text")
指定所有者窗口的内容不同。
我已经看到在Windows XP中你可以保存,但是在Windows 7中,如果所有者窗口在与你调用MessageBox
的线程不同的线程中运行,则会遇到跨线程异常!
答案 1 :(得分:4)
不,它不会导致任何“跨线程”异常。那是因为MessageBox不是在UI线程上运行的类的成员。
答案 2 :(得分:1)
将MessageBox放在一个单独的线程中是安全的。但请记住,它只会阻止创建它的线程。如果您使用的是WinForm应用程序而另一个线程调用MessageBox,那么该表单仍然可以使用,用户可以忽略它。