WPF 元素事件处理程序中的 UI 更新

2023-11-24

WPF 中的 UI 更新存在问题。

我有这样的代码:

    private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
    {
        Label.Visibility = Visibility.Visible;
        TextBox.Text = "Processing...";

        LongTimeMethod(); //some long operation
    }

问题是,在 LongTimeMethod 结束(即事件处理程序结束)之前,Label.Visibility 和 TextBox.Text 将不会更改。

到目前为止我是这样解决的:

    private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
    {
        Label.Visibility = Visibility.Visible;
        TextBox.Text = "Processing...";

        Dispatcher.BeginInvoke(new Action(LongTimeMethod), 
            DispatcherPriority.Background);
    }

有没有其他不使用调度程序调用的解决方案?调用 this.UpdateLayout() 没有帮助。


With Dispatcher.BeginInvoke你仍在使用 UI 线程LongTimeMethod()。如果这不是必需的(即它正在执行某种后台处理),我建议使用 TPL 在后台线程上运行它:

private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
    Label.Visibility = Visibility.Visible;
    TextBox.Text = "Processing...";

    Task.Factory.StartNew(() => LongTimeMethod())
        .ContinueWith(t =>
        {
            Dispatcher.BeginInvoke((Action)delegate()
            {
                TextBox.Text = "Done!";
            });
        });

}

使用此方法,长时间运行的方法将在后台线程上处理(因此 UI 线程将可以自由地继续渲染,并且应用程序不会冻结),并且您可以执行任何更改 UI 的操作(例如更新文本框)文本)在用户界面上Dispatcher当后台任务完成时

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

WPF 元素事件处理程序中的 UI 更新 的相关文章

  • 在 Python 中打印守护线程异常

    Python 不会打印守护线程中引发的异常的回溯消息 例如 以下代码创建一个守护线程并在新线程中引发异常 def error raiser raise Exception import threading thread threading
  • Python 2.7:支持一个端口上多个连接的流式 HTTP 服务器

    我正在寻找一个标准的Python 2 7包 提供一个同时执行的HTTP服务器流媒体同一端口号上的连接 嘿 各位版主 请停止将我的问题标记为想要以非流媒体方式提供服务的问题的重复项 例如 python 中的多线程 Web 服务器 https
  • 如何更改 TextBox.Text 而不丢失 WPF 中的绑定?

    在 WPF 应用程序中 我正在创建一个设置窗口来自定义键盘快捷键 在文本框中 我处理 KeyDown 事件并将 Key 事件转换为人类可读的形式 以及我想要获取数据的形式 文本框声明如下
  • WPF 中处理系统关闭

    如何在 WPF 中重写 WndProc 当我的窗口关闭时 我尝试检查我正在使用的文件是否被修改 如果是 我必须提示用户 你想保存更改吗 消息 然后关闭正在使用的文件和窗口 但是 当我的窗口仍然打开时 我无法处理用户重新启动 关闭 注销的情况
  • Tkinter:消息小部件中锚点选项的正确值是多少?

    我一直在学习 tkinterTkinter 中的消息小部件 https python course eu tkinter message widget in tkinter php at Python 课程和教程 https python
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • 删除 JFX 中选项卡后面的灰色背景

    So is there any way to remove the gray area behind the tab s 我尝试过用 CSS 来做到这一点 但没有找到方法 要设置 tabpane 标题的背景颜色 请在 CSS 文件中写入 t
  • java中使用多线程调用同一类的不同方法

    我有一个类 如下所示 具有三种方法 public class MyRunnable implements Runnable Override public void run what code need to write here to c
  • 如何在Spring-Boot中创建DefaultMessageListenerContainer?

    我是 Spring Boot 的新手 并尝试创建 DefaultMessageListenerContainer 以便我可以使用 weblogic workmanager 并以多线程方式运行多个消息侦听器 有人可以提供一些例子吗 到目前为止
  • 如何对 Prism / MEF 中的 ItemsControl 中的视图进行排序?

    我使用 prism v4 和 MEF 来加载我的模块 我的模块包含一些视图 MVVM 这些视图由 MEF 自动加载到 ItemsControl NavigationRegion 中 这很好用 所有项目都显示在 ItemControl 中 但
  • 如何使用 MVVM 打开和关闭新 Windows?

    对于 MVVM 和 WPF 什么是处理打开和关闭新窗口和对话框的好 直接方法 打开和关闭应该由 ViewModel 驱动 对吗 但 ViewModel 不应该知道视图 我通常为此使用接口 例如 如果我想在单独的窗口中编辑记录 我有一个接口
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • .NET UI 元素线程限制的原因

    我们知道 除了实例化元素的线程之外 不可能从任何线程执行操作任何 UI 元素属性的代码 我的问题是 为什么 我记得当我们使用 COM 用户界面元素时 在 COM Visual Basic 6 0 时代 所有 UI 元素都是使用 COM 类和
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将
  • Java 和 GUI - 根据 MVC 模式,ActionListener 属于哪里?

    我目前正在编写一个模板 Java 应用程序 不知何故 如果我想完全遵循 MVC 模式 我不确定 ActionListener 属于哪里 该示例基于 Swing 但它不是关于框架 而是关于 Java 中 MVC 的基本概念 使用任何框架创建
  • ViewModel 中的 TextBox CaretIndex 属性

    是否可以通过视图中定义的 Binding 获取 设置 wpf 视图模型中 TextBox 控件的 CaretIndex 属性的值 Thanks 这里的问题是如何获得CaretIndex of the TextBox通过视图模型进行控制 如果
  • 父子进程之间的通信

    我正在尝试创建一个具有一个或多个子进程的 Python 3 程序 父进程生成子进程 然后继续处理自己的业务 有时我想向特定的子进程发送一条消息 由其捕获该消息并采取行动 此外 子进程在等待消息时需要处于非锁定状态 它将运行自己的循环来维护服
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 从固定文档中删除页面?

    如何从固定文档中删除页面 我添加这样的页面 Add page to pageContent PageContent pageContent new PageContent IAddChild pageContent AddChild fix

随机推荐

  • StreamingResponseBody 中的异常处理不起作用

    我试图捕获在我的实现中抛出的异常StreamingResponseBody 我可以看到类内部抛出异常 但是我的处理似乎有效 但是我无法获取自定义消息 我的响应代码是200 GetMapping path test produces appl
  • Android AppWidget 在重新启动之前不会显示在蜂窝菜单中

    我已经为 Honeycomb 创建了一个 AppWidget 它运行良好 但首次安装时 它不会显示在 Widgets 菜单中 因此无法将其添加到主屏幕 重新启动设备将使其显示出来 或者在开发过程中 从 Eclipse 发送两次将使其显示出来
  • 保存到用户“我的文档”中的文件夹

    当我为应用程序创建安装程序时 我将在 我的文档 中创建一个文件夹 该文件夹将用于保存应用程序中的文件 我希望我的应用程序在保存文件和打开文件对话框打开时自动提取此目录 现在我的问题是 我需要使用什么字符串才能访问 我的文档 中的文件夹 我知
  • 在 Android Studio 中导入模块

    如何在 Android Studio 中导入外部模块 名为 ViewPagerIndicator 在 Android Studio 3 3 及更低版本中导入模块的步骤 Go to File gt gt New gt gt 导入模块 选择要导
  • ios url从邮件重定向到应用程序

    是否可以使用通过邮件发送的 URL 来启动我的应用程序 例如 我有用户个人资料 用户想要邀请他们的朋友进入应用程序 他们发送一封电子邮件 其中包含一些网址 例如 通过此链接加入我 http appname sender id 25 some
  • 复制和克隆有什么区别?

    这个问题似乎暗示这只是一个实现细节 memcpyvs 但我找不到任何关于差异的明确描述 Clone专为任意重复而设计 Clone类型的实现T可以执行创建新对象所需的任意复杂操作T 它是一个正常特征 除了在前奏中 因此需要像正常特征一样使用
  • 基于一个代码库/项目创建演示版和完整版应用程序

    我在一个项目中使用 Eclipse 开发了一款 Android 应用程序 它是结构化的 来自 iPhone 因此一个常量定义它是演示版还是完整版 现在我遇到的问题是 每次我想创建演示版本时 我都需要更改常量 但还需要使用不同的包名称制作项目
  • BitBucket:主机密钥验证失败

    我想将远程存储库克隆到本地计算机 我使用了命令 git clone email protected
  • Mac OSX El Capitan 上的 JDK 7/JavaFX 2 应用程序

    我刚刚升级到 El Capitan 在启动在 JDK1 7 0u79 Oracle 提供的最新版本 下运行的自定义 JavaFX2 应用程序时遇到问题 启动应用程序时 我收到此异常 Exception in thread main java
  • Jmeter远程连接抛出“连接拒绝主机”

    我在 unbundu 机器中使用 JMeter 设置了分布式负载测试环境 gt Master 运行JMeter GUI的系统 控制各个slave gt Slave 运行jmeter server的系统 接收来自master的命令并向被测服务
  • 在 Windows 7 下使用 python 3.3 (Anaconda) 构建最小的 cython 文件

    当我尝试在 Windows 7 下使用 Python 3 3 Anaconda 3 构建最小的 Cython 文件 test pyx 时 我收到一个奇怪的错误 C Users myname Test cython gt python set
  • 如何在 Swift 框架中使用 Cocoapods?

    我正在尝试使用 Cocoapods 中的一些库在 Swift 中为 iOS 创建一个新的 Cocoa Touch 框架 但我无法让它工作 我知道有一些关于此的悬而未决的问题 但它们似乎都不能解决我的问题 出于测试目的 我刚刚创建了一个空的
  • 用python求解非线性方程组

    我可以用Python中的参数求解非线性方程组吗 有示例或教程吗 我可以在 Maple 中轻松完成此操作 但我的特定系统的表达式非常大 复制它们非常困难 例子 sigma y x 0 x rho z y 0 x y beta z 0 您应该得
  • 替换模式内所有出现的地方

    我有一个像这样的字符串 some text other text and some other text this should not be replaced but this should 我希望它成为 some text other
  • 使用 Electron 嵌入 Mongodb

    我将 MongoDB 源代码保存在电子源代码中 并使用以下命令运行 MongoDB const app require electron app const child process require child process const
  • Rails:使用回形针防止重复照片上传?

    如果用户尝试使用 Paperclip 将同一张照片上传到 Rails 应用程序两次 是否会引发验证错误 Paperclip 似乎没有提供此功能 我正在使用 Rails 2 3 5 和回形针 明显地 解决方案 或至少其中之一 根据 Beerl
  • 创建一个只有一个对角线的 UIView

    我需要创建一个左边框倾斜的 UIView45度我想知道 有没有办法以编程方式实现这一目标 做CA变换3D在这种情况下帮助我 因为它不是真正的 3D 旋转 Edit 这是一张图片 更多地解释了我所需的输出 如果您只想要没有内容的形状 那么您可
  • gmpxx.h:没有这样的文件或目录

    我刚刚安装了一个全新的 mingw 32 位 下载它来自官方项目页面来自 Sourceforge 我安装了包中的所有内容 所有编译器等等 然后我从下载hereMinGW 的 gmp 我将 gmp 5 0 1 1 mingw32 src ta
  • 显示用户窗体后将焦点设置回应用程序窗口

    当显示用户表单时 运行其Show方法 它不仅显示在屏幕上 而且还获取焦点 例如击键的目的地 比如说 用户窗体是一个定制的工具栏 它是Show开火Workbook Open 但表单本身的使用相对较少 因此我们希望焦点在其出现后立即返回到主应用
  • WPF 元素事件处理程序中的 UI 更新

    WPF 中的 UI 更新存在问题 我有这样的代码 private void ButtonClick EventHandler object sender RoutedEventArgs e Label Visibility Visibili