从线程触发时,C#ShowDialog()不会阻止主窗体
我有一个Windows窗体应用程序,主窗体和几个后台线程。 为了显示“好”的消息,我实现了一个表单,使用ShowDialog()
显示为模式对话框。
所有对ShowDialog()
的调用都是在主窗体的表单级别上实现的(而不是在线程级别上),但有时我会从一个线程触发一个事件,该事件将在主窗体的表单级别上处理。 在这些情况下,对话框不再是模态的…主窗体不会被阻止。 当没有从线程触发ShowDialog()
的调用时,它是模态的。
如何确保每次调用ShowDialog()都会阻止主窗体?
如何确保每次调用
ShowDialog()
都会阻止主窗体?
在主线程上执行对ShowDialog()
的调用。 如果需要从其他线程调用它们,请使用Invoke()
在主线程上运行它们。