我有一个带有主窗体和多个后台线程的 Windows 窗体应用程序。为了显示“不错”的消息,我使用 ShowDialog()
实现了一个显示为模态对话框的表单。
所有对 ShowDialog()
的调用都是在主窗体的窗体级别(而不是线程级别)实现的,但有时我会从一个线程触发一个事件,该事件将在窗体上处理主窗体的层次。在那些情况下,对话框不再是模态的……主窗体没有被阻塞。当对 ShowDialog()
的调用不是从线程触发时,它根据需要是模态的。
如何确保每次调用 ShowDialog() 时都会阻塞主窗体?
最佳答案
How can I make sure that every call to
ShowDialog()
will block the main form?
在主线程上执行对 ShowDialog()
的调用。如果您需要从不同的线程调用它们,请使用 Invoke()
在主线程上运行它们。
关于从线程触发时,C# ShowDialog() 不会阻塞主窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680304/