博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF和Silverlight程序中DispatcherTimer与Timer的区别
阅读量:5044 次
发布时间:2019-06-12

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

转自:

 

相同点:都是定时执行任务的计时器,都可以使用。

不同点:Timer运行在非UI 线程,如果Timer需要更新UI的时候,需要调用 Invoke或者 BeginInvoke

DispatcherTimer运行在UI 线程,处理的 Dispatcher 队列中的计时器,可以直接更新UI

WPF 应用程序启动时具有两个线程:一个用于处理呈现,另一个用于管理 UI。

呈现线程实际上隐藏在后台运行,而 UI 线程则接收输入、处理事件、绘制屏幕以及运行应用程序代码。 大多数应用程序只使用一个 UI 线程,但在某些情况下,最好使用多个线程。比如大数据量的处理放到后台线程中。

UI 线程在一个名为 Dispatcher 的对象中将工作项进行排队。Dispatcher 根据优先级选择工作项,并运行每一个工作项直到完成。每个 UI 线程都必须至少有一个 Dispatcher,而每个 Dispatcher 都只能在一个线程中执行工作项。

要构建响应速度快、且用户友好的应用程序,诀窍是减小工作项,以最大限度地提高 Dispatcher 吞吐量。 这样,工作项将永远不会因为在 Dispatcher 队列中等待处理而失效。 输入与响应之间的任何可察觉的延迟都会使用户不快。

转载于:https://www.cnblogs.com/jeekun/archive/2011/12/08/2280231.html

你可能感兴趣的文章
机器学些技法(9)--Decision Tree
查看>>
静态页面复习--用semantic UI写一个10min首页
查看>>
在Windows下安装64位压缩包版mysql 5.7.11版本的方法
查看>>
drf权限组件
查看>>
输入月份和日期,得出是今年第几天
查看>>
利用mysqldump备份mysql
查看>>
Qt中子窗口全屏显示与退出全屏
查看>>
使用brew安装软件
查看>>
[BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
查看>>
吴裕雄 python 机器学习——数据预处理嵌入式特征选择
查看>>
Centos6.4安装JDK
查看>>
201521123069 《Java程序设计》 第4周学习总结
查看>>
线性表的顺序存储——线性表的本质和操作
查看>>
【linux】重置fedora root密码
查看>>
用swing做一个简单的正则验证工具
查看>>
百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转
查看>>
pig自定义UDF
查看>>
输入名字显示其生日,没有则让输入生日,做记录
查看>>
爬虫综合大作业
查看>>
Kubernetes 运维学习笔记
查看>>