博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF中UI及时更新,如何在处理长时间工作时,保持界面的持续更新
阅读量:7088 次
发布时间:2019-06-28

本文共 663 字,大约阅读时间需要 2 分钟。

 不管是在winform还是在WPF中,我们要做一个进度条,用在一个大循环或者一个耗时的处理中,首先想到的就是多线程。否则进度条会出现假死现象,进度条不会更新。做多线程是比较麻烦的,如果只是简单的更新UI,可以用Systems.DoEvents。

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

public 
void DoEvents()     
{     
    DispatcherFrame frame = 
new DispatcherFrame();     
    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,     
        
new DispatcherOperationCallback(
delegate(
object f)     
            {     
                ((DispatcherFrame)f).Continue = 
false;     
     
                
return 
null;     
            }     
            ), frame);     
    Dispatcher.PushFrame(frame);     
}     

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

 

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

转载于:https://www.cnblogs.com/lujin49/archive/2011/07/20/2111382.html

你可能感兴趣的文章
CodeForces 300C 最短路
查看>>
睡觉被憋醒
查看>>
Java 7 Fork/Join 框架
查看>>
c++中冒号(:)和双冒号(::)的用法
查看>>
dubbo工作原理
查看>>
驱动开发利器Microsoft Windows Driver Kit 7.1.0下载
查看>>
maven_项目的依赖、聚合、继承
查看>>
一个C++类的注释:
查看>>
Winsock IO模型之select模型
查看>>
开发规范
查看>>
union和union all的区别
查看>>
debian attempt to kill init!
查看>>
centos7下使用yum安装mysql
查看>>
jquery获取div距离顶部的距离
查看>>
CentOS使用EPEL YUM源
查看>>
大型网站架构设计及技术总结
查看>>
phpunit assert断言分类整理
查看>>
springMVC robots.txt 处理
查看>>
python2.0_s12_day19_前端模版使用
查看>>
PHP json_decode object时报错Cannot use object of type stdClass as array
查看>>