从线程触发时,C# ShowDialog() 不会阻塞主窗体

标签 c# multithreading winforms

我有一个带有主窗体和多个后台线程的 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/

相关文章:

VB.NET datagridview 与组合框的一对一映射

ios - 如何在可用于开放式 GL 的后台线程上创建核心图形纹理

multithreading - 循环时更新PyQt4 GUI

c# - VS2017 .Net Core 2.0 测试 : "Failed to initialize client proxy: could not connect to test process"

c# - 如何在运行前编译 cshtml 而不是在临时文件上抛出构建错误

c++ - 绑定(bind)服务器套接字时出现 WSA 错误 10048

c# - .net 标签加速键事件

c# - ClickOnce 连接字符串加密

c# - 为什么 foreach 循环在某些情况下不起作用?

c# - 检查字符串是否包含列表(字符串)中的元素