WPF中UI及时更新,如何在处理长时间工作时,保持界面的持续更新

摘要:
 不管是在winform还是在WPF中,我们要做一个进度条,用在一个大循环或者一个耗时的处理中,首先想到的就是多线程。否则进度条会出现假死现象,进度条不会更新。在winform中,使用PeekMessage处理完消息队列,使UI有机会更新。在WPF中,可以在Dispatch里使用PushFrame达到同样的效果。
 不管是在winform还是在WPF中,我们要做一个进度条,用在一个大循环或者一个耗时的处理中,首先想到的就是多线程。否则进度条会出现假死现象,进度条不会更新。做多线程是比较麻烦的,如果只是简单的更新UI,可以用Systems.DoEvents。

在winform中,使用PeekMessage处理完消息队列,使UI有机会更新。在WPF中,可以在Dispatch里使用PushFrame达到同样的效果。

publicvoidDoEvents()
{
DispatcherFrameframe=newDispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
newDispatcherOperationCallback(delegate(objectf)
{
((DispatcherFrame)f).Continue=false;
returnnull;
}
),frame);
Dispatcher.PushFrame(frame);
}

写了这个方法后,我们在循环中或者事件中,在需要更新的UI后面调用一下DoEvents()就可以了。

以下内容需要引用 using System.Windows.Threading 命名空间

免责声明:文章转载自《WPF中UI及时更新,如何在处理长时间工作时,保持界面的持续更新》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【山外笔记-工具框架】Netperf网络性能测试工具详解教程WebGL 内嵌网页的一种解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

详解如何利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入

我们先来简单了解一下WinForm和FarPoint,WinForm是·Net开发平台中对Windows Form的一种称谓。而FarPoint是一款模拟EXCEL的控件。它可以根据用户的要求实现很大部份的EXCEL操作,且包括多个子表、表格风格定义、公式计算、排序、分组等等都可以实现。本文主要是介绍利用FarPoint Spread表格控件来构造Winf...

Winform欢迎界面

欢迎界面的目的一方面是为了让界面好看,另外一方面可以让主界面的数据准备。 一、用timer实现 欢迎界面中控制界面的显示方式并使用 timer 控制欢迎界面的消失时间 View Code 1 staticclassProgram2 {3 ///<summary>4 ///应用程序的主入口点。5 ///</summary>6 [S...

WinForm控件之【ToolTip】

  基本介绍 信息提示控件,用户将指针移过关联控件时显示信息,页面新增该控件后其他所有面板可视控件都会新增toolTip的关联文本内容属性。 常设置属性 AutoPopDelay:当指针在工具区域内保持静止时,工具提示窗口保持可见的时间长度; InitialDelay:指针在工具区域内保持静止时,多长时间触发提示窗口显示(毫秒单位); IsBalloon:...

winform 使用task不卡界面的2种方式

方法1: button1.Enabled = false; TaskScheduler uiContext = TaskScheduler.FromCurrentSynchronizationContext(); Task t = Task.Factory.StartNew(async...

Winform界面适应不同分辨率

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Drawing; namespace ZhaotongT...

Winform打包Exe Inno Setup

9.下载安装Inno Setup 下载地址:https://pc.qq.com/detail/13/detail_1313.html 安装完成以后打开Inno Setup客户端 a. file->new,新建脚本 b.填写应用程序信息,黑体为必填项 Application name: 应用名称; Application version:应用版本;...