WPF Dispatcher.调用“挂起”

2023-12-30

我有一个有点复杂的 WPF 应用程序,当尝试使用调度程序在 UI 线程上调用调用时,该应用程序似乎“挂起”或陷入 Wait 调用中。

一般流程是:

  1. 处理按钮上的点击事件
  2. 创建一个新线程 (STA):创建演示者和 UI 的新实例,然后调用该方法断开
  3. 然后断开连接在 UI 上设置一个名为Name
  4. 然后,Name 的设置器使用以下代码来设置属性:

    if(this.Dispatcher.Thread != Thread.CurrentThread)
    {
        this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate{
            this.Name = value; // Call same setter, but on the UI thread
        });
        return;
    }

    SetValue(nameProperty, value); // I have also tried a member variable and setting the textbox.text property directly.

我的问题是当调度员invoke调用方法似乎每次都会挂起,并且调用堆栈表明它处于睡眠、等待或加入 Invoke 实现中。

那么,我是否做错了什么,无论是否明显,或者是否有更好的方法来调用 UI 线程来设置此属性(和其他属性)?

Edit:解决方案是在线程委托末尾(例如正在执行工作的位置)调用 System.Windows.Threading.Dispatcher.Run() - 感谢所有提供帮助的人。


调用是同步的 - 您需要 Dispatcher.BeginInvoke。另外,我相信您的代码示例应该将“SetValue”移动到“else”语句内。

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

WPF Dispatcher.调用“挂起” 的相关文章

  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • strlen() 编译时优化

    前几天我发现你可以找到编译时strlen使用这样的东西 template
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • TextBlock TextWrapping 不换行 #2

    好吧 那么this https stackoverflow com questions 6625177 textblock textwrapping not wrapping解决方案没有帮助 XAML 在这里
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 在哪里可以找到 Microsoft.Build.Utilities.v3.5

    如何获取 Microsoft Build Utilities v3 5 我正在使用 StyleCop 4 7 Stylecop dll 中的 StyleCop msbuild 任务似乎依赖于 Microsoft Build Utilitie
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内

随机推荐

  • 如何在c#中设置我想用作应用程序图标的ico?

    我在属性中设置的图标在任务栏和应用程序窗口中可见 但资源管理器中的应用程序图标不同 您设置的应用程序图标是否在不同的图标大小下具有不同的图像 这就是您在资源管理器中看到差异的原因 要对此进行测试 请在 Visual Studio 中打开您的
  • 在 Python 中将位转换为字节

    我正在尝试在 Python 3 x 中将位字符串转换为字节字符串 在每个字节中 位是从高位到低位填充的 如有必要 最后一个字节用零填充 位字符串最初存储为布尔值或整数 0 或 1 的 集合 我想返回 0 255 范围内的整数 集合 我所说的
  • iPhone屏幕分辨率在未来硬件中的变化

    在开发应用程序时 我一段时间以来一直担心的是图像和视图组件的硬编码几何图形 这些图形和视图组件理所当然地认为当前几代显示器的 320x480 特性是理所当然的 我在 StackOverflow 和在屏幕尺寸中硬编码的示例 教程中看到了很多答
  • phpstorm中如何设置行注释的样式

    如何将 PHPStorm 中行注释的默认样式更改为缩进级别而不是第一列 if condition At first column At indentation level 对于 Ctrl 行注释 位于 设置 gt 代码样式 gt PHP g
  • 如何将节点 Winston JSON 输出更改为单行

    当我创建一个nodejs Winston控制台记录器并设置json true 它总是以多行格式输出 JSON 日志 如果我将它们通过管道传输到一个文件并尝试 grep 该文件 我的 grep 命中仅包含日志行的一部分 我希望温斯顿以 JSO
  • 如何在html视图中从数据库获取数据到Dropdownlist

    我正在创建一个网页 其中有一个Dropdownlist 我必须从数据库中检索 drop down list 的数据 有没有办法从数据库获取数据到html视图我的html代码
  • CSS3多重过渡反转动画

    我有一个 div 我正在尝试使用 CSS 制作动画 div width 100px height 50px moz transition width 1s height 1s 1s div hover width 400px height
  • 如何检查单个字符是否等于给定的一组字符中的至少一个?

    对不起这个标题 请随意将其编辑为更清晰的内容 我有一个字符串 我必须检查该字符串的第一个字符是否等于其他给定字符之间的至少一个 例如 B Z 和 K 在我的例子中 我有大约 10 个字符要检查 但它们不是可以分类为一个范围 我正在按如下方式
  • 无法找出C程序中的逻辑错误

    一种每行打印一个单词的输入的程序 int main int c while c getchar EOF if c c n c t putchar n else putchar c return 0 上面的程序正确打印结果 每行一个字 相应地
  • OmniContacts gem 总是无法导入我的 yahoo 联系人

    我正在使用 OmniContacts gem 将联系人从 yahoo 和 gmail 导入到我的应用程序 现在雅虎进口商停止工作 我的控制器上有以下操作 def contacts callback contacts request env
  • AngularJS 指令中没有值的属性

    我已经编写了一个具有隔离范围的指令 app directive myDirective function return restrict E scope attr1 attr2 noValueAttr what to put here li
  • Docker for Windows Kubernetes pod 在创建新部署后获取 ImagePullBackOff

    我已经成功构建了 Docker 镜像并在 Docker 群中运行它们 当我尝试构建映像并使用 Docker Desktop 的 Kubernetes 集群运行它时 docker build t myimage f myDockerFile
  • 如何比较两个字符串汇编

    谁能告诉我如何用汇编语言比较两个字符串 我写了以下内容 但它似乎不起作用 assume cs code ds data data segment sirlung db abcdjjj lungimelung equ sirlung sirs
  • 从 Mac 终端运行/打开 VSCode

    我想通过运行此命令从 Mac OSX 终端运行 打开 Visual Studio Codecode 我在这里找到了说明 https code visualstudio com Docs setup https code visualstud
  • AppBarLayout 和 Toolbar 的新 Android 设计库错误

    我正在使用基于此示例的新 Android 设计库克里斯班斯 奶酪广场 https github com chrisbanes cheesesquare在 github 和here http android developers blogsp
  • 未能在 SOAP 上加载外部实体错误

    我称为位于 https 协议上的 Web 服务 我在调用它时收到 无法加载外部实体 错误 正如我在 google 上搜索的那样 这是因为在 PHP5 中 SOAP 类不会解析位于安全 HTTPS 连接上的 WSDL 文件 解决办法是什么 我
  • iOS:检测我的SDK是否安装在设备上的其他应用程序上

    我正在为移动设备开发基于位置的问答 SDK 当询问有关特定位置的问题时 服务器端会定位最相关的用户并将问题发送给该用户 如果用户未能回答 问题将发送给第二好的用户 依此类推 问题是我的 SDK 可能安装在设备上的多个应用程序上 这意味着用户
  • 如何为 Rust 终端应用程序启用可编辑的用户输入?

    我正在用 Rust 编写一个带有经典的基于终端的 REPL 环境项目的最小 Lisp 如何从箭头键读取用户输入 允许他们至少在按下之前在当前输入行上来回移动enter 理想情况下 我将能够扩展功能 包括 返回 以检索旧输入 就像在任何终端或
  • 为什么我们需要其他 JVM 语言

    I see here http www is research de info vmlanguages index html除了 Java 之外 还有很多语言可以在 JVM 上运行 我对在 JVM 中运行的其他语言的整个概念有点困惑 所以
  • WPF Dispatcher.调用“挂起”

    我有一个有点复杂的 WPF 应用程序 当尝试使用调度程序在 UI 线程上调用调用时 该应用程序似乎 挂起 或陷入 Wait 调用中 一般流程是 处理按钮上的点击事件 创建一个新线程 STA 创建演示者和 UI 的新实例 然后调用该方法断开