WPF 中的 Thread.Join UI 块

2023-11-30

我创建了一个自定义MessageWindow为了摆脱旧的并融入我自己的风格......

我的问题是,例如,当我单击按钮打开自定义MessageWindow它并没有真正阻止我的用户界面。

public static void Show(string caption, string message)
{
    Thread thread = new Thread(() =>
    {
        MessageWindow window = new MessageWindow(caption, message);
        window.ShowDialog();
    });
    thread.SetApartmentState(ApartmentState.STA);
    thread.Start();
    thread.Join();
}

我想thread.Join会阻塞父线程,直到新线程消失,但不知何故 UI 部分处于活动状态。我看不到动画,也无法移动窗口,但是当我单击被阻止的线程上的按钮时,我的MessageWindow打开它仍然接受点击并在我关闭后执行它MessageWindow thread.

有什么办法可以disable当消息窗口打开时,消息泵或阻止/锁定任何线程/UI?


您不应该为另一个窗口创建新线程。使用 WPF 时,所有 UI 都应在同一线程上运行。

当你想做一些与UI无关并且不想阻塞UI的事情时创建新线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 中的 Thread.Join UI 块 的相关文章

随机推荐

  • 使用 sudo 更改根目录中的文件[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个脚本来配置resolv conf and etc network interfaces自动地 我以 sudo 身份运行命令 但收到 权限被拒绝 错误 sudo apt get assume ye
  • 如何在循环中使用 numpy.dstack?

    我正在尝试通过使用 2D 数组和 np dstack 来填充数组 m1 np array 1 1 1 1 m2 np array 2 2 2 2 m3 np array 3 3 3 3 lst m1 lst np dstack lst m2
  • 查找 Scikit-learn 分类器中最常见的术语 [重复]

    这个问题在这里已经有答案了 我正在关注Scikit 学习文档中的示例 where CountVectorizer用于某些数据集 Question count vect vocabulary viewitems 列出所有术语及其频率 如何按出
  • 如何在 R 中读取和命名不同的 CSV 文件

    我想对几个 csv 文件进行一些比较 因此我编写了以下代码来读取我拥有的不同 csv 文件 path lt C data files lt list files path path pattern csv for file in files
  • Python 类中的变量作用域

    在类中声明变量 在函数之外 所有类函数都可以访问它 基本上是公共变量 在类内的函数内声明变量 只有该函数可以访问它 它在该函数的范围内 声明一个变量self variable name 在类内的函数内部 所有类函数都可以访问它 这与glob
  • 如何使用 @compatibility_alias 为以前版本的 iOS 的类添加别名

    有人可以告诉我如何使用 compatibility alias 获取一个类 例如 UIActivityViewController 这是 iOS 6 中新增的 并使用 compatibility alias 使其在 iOS 5 和 iOS
  • 自定义动画菜单 CSS/ jQuery

    我有这个代码片段 想知道是否有可能对其进行修改 以便在悬停翻译后获得 在单击事件上保持原位或向右移动几个像素 直到单击另一个菜单按钮 mynewmenu implementation nav ul li mouseover function
  • 无法将用户输入值回显到批处理脚本中的文件

    我正在编写一个批处理文件 它将根据多个用户输入值生成 写入属性文件 但是 它不记录输入的值 结果看起来像 prop1 prop2 我想知道是否有一些我需要知道的设置会阻止它工作 奇怪的是 如果我多次运行这个特定的脚本 echo 输出的值似乎
  • Cordova 无法为 2097152KB 对象堆保留足够的空间

    我是 cordova 新手 正在尝试创建一个 android HelloWold 项目 当我使用cordova platforms add android 它会抛出一些异常 D CordovaSpace helloWorld gt cord
  • 如何使用 SMO 更有效地检索 SQL 存储过程参数?

    我正在尝试检索 StoredProcedure 中所有参数的 DefaultValue 我的应用程序是用 C NET 构建的 访问 Microsoft SQL 2008 数据库 我使用 SqlCommandBuilder DerivePar
  • 模拟列表并尝试迭代它

    目前使用 Mockito 来测试我的一个类中的方法 我的类包含一个列表 并且该方法接受同一类的对象 问题是当我尝试从对象迭代列表时 我得到一个指向列表的空指针 下面您将看到代码片段 private Shipment shipment pri
  • 原始套接字编程 UDP Python

    如何在 python 中以 SOCK RAW 格式添加自定义字段 如 IP 和 UDP 标头 我想在数据包中有一个自定义字段并在计算中使用该字段 您没有指定自定义字段的位置 此示例允许您随意构建 UDP 标头 至少在 Linux 上 可能存
  • JavaScript 字符串相等性能比较

    我有一个 JavaScript 菜鸟问题 假设我们有两个相等的非常大的字符串 一百万个字符或更多 它们具有相同的长度和相同的内容 假设我们有这两个函数 它们都执行相同的操作 比较字符串 function equals1 a b return
  • 如何在空手道上集成 socket.io

    我知道空手道有对 WebSocket 的内置支持 但无论如何可以使用套接字 io空手道 我想将消息发送到与 socket io 通信的微服务中 并等待响应以断言该消息符合预期 不 您不能使用空手道中的任意 JavaScript 库 而且通常
  • 将值附加到 c 数组

    这是一个非常简单的问题 但我不知道该怎么做 例如 我有一个名为Array包含值 1 2 3 4 5 6 我想添加第七个值 7 到数组 因此它包含 1 2 3 4 5 6 7 有一个函数可以做到这一点吗 我需要包含任何额外的头文件吗 任何帮助
  • 适用于即时消息传递的协议

    我们必须使用合适的协议开发一个用于即时消息传递的本机移动应用程序 我们还将为该应用程序开发一个网站 以便那些无法登录移动设备的人可以通过该网站继续进行即时消息传递 随后 我们将向本机移动应用程序和网站添加语音和视频通话功能 现在我的问题是
  • JavaScript %(模)对于负数给出负结果

    根据谷歌计算器 13 64 is 51 根据 Javascript 参见此JSBin it is 13 我该如何解决 Number prototype mod function n use strict return this n n n
  • OData异常复杂类型“WebTools.Order”通过属性“Customer”引用实体类型“WebTools.Customer”

    我正在开始使用 OData 和实体框架 我创建了一个公开客户的控制器 在模型 edmx 中只有一个实体 客户 并且一切正常 数据正在渲染 现在 当我添加第二个实体 订单 从数据库更新模型 选择订单 时 一对多 1 个客户对多个订单 会自动设
  • Android Studio:Gradle:错误:找不到符号变量

    我正在开发我的应用程序 一切正常 直到我尝试在 java 中显示图像 我运行了一次应用程序 运行正常 显示了图片 之后它要求我导入一些库 我导入了它们 之后我的活动出现错误 错误如 Gradle error cannot find symb
  • WPF 中的 Thread.Join UI 块

    我创建了一个自定义MessageWindow为了摆脱旧的并融入我自己的风格 我的问题是 例如 当我单击按钮打开自定义MessageWindow它并没有真正阻止我的用户界面 public static void Show string cap