在我的应用程序中,我使用 UI 线程的空闲时间来卸载昂贵的操作,如下所述有关 WPF 线程模型的 MSDN 文章 http://msdn.microsoft.com/en-us/library/ms741870.aspx.
GenerateDataAction = () => { GenerateData(); };
Dispatcher.BeginInvoke(GenerateDataAction, DispatcherPriority.Render, null);
In the GenerateDate()
方法我访问 MSSQL 数据库、处理数据并更新视图模型上的绑定。自从实施这个以来我注意到some绑定无法正确更新或根本无法更新。我已经检查了输出中是否存在绑定错误,并让第二个程序员确认了逻辑,还在依赖属性更改方法中设置了断点(断点不会被击中)。
有没有最佳实践建议which DispatcherPriority
(链接到 MSDN http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcherpriority.aspx) 当调用的操作包含绑定时应该使用吗?
关于 WPF 调度程序的非常好的文章:http://weblogs.asp.net/pawanmishra/archive/2010/06/06/understanding-dispatcher-in-wpf.aspx http://weblogs.asp.net/pawanmishra/archive/2010/06/06/understanding-dispatcher-in-wpf.aspx
作为 WPF 程序员,我们可以将自定义的耗时逻辑推入
维护的队列Dispatcher
班级和协会较低
该工作项的优先级值。基于优先级字段的值
相应的代码将按照指定的时间间隔执行。
这里需要注意的重要一点是所有工作仍在完成中
通过UIthread,它只是在帮助下DispatcherPriority
我们
确定了我们任务的优先顺序。理想情况下建议优先
价值观少于 7(Render
)到我们希望的自定义逻辑
在 Dispatcher 的帮助下执行。最常见的优先值Background
用于特定于应用程序的自定义逻辑。多发性硬化症
单词拼写检查就是借助该机制实现的
优先级值为ApplicationIdle
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)