关于使用Dispatcher优先级和绑定的建议
本文关键字:绑定 于使用 Dispatcher 优先级 | 更新日期: 2023-09-27 18:09:08
在我的应用程序中,我使用UI线程的空闲时间来卸载昂贵的操作,正如MSDN文章中关于WPF线程模型的描述。
GenerateDataAction = () => { GenerateData(); };
Dispatcher.BeginInvoke(GenerateDataAction, DispatcherPriority.Render, null);
在GenerateDate()
方法中,我访问MSSQL数据库,处理视图模型中的数据,并更新视图模型上的绑定。我注意到,自从实现这一点以来,一些绑定不能正确更新或根本不更新。我检查了绑定错误的输出,并有第二个程序员确认逻辑,还在依赖属性更改方法中设置了断点(断点不会被击中)。
是否有关于的最佳实践建议,当调用的操作包含绑定时应该使用 DispatcherPriority
(链接到MSDN) ?
关于WPF调度程序的一篇非常好的文章:http://weblogs.asp.net/pawanmishra/archive/2010/06/06/understanding-dispatcher-in-wpf.aspx
作为一个WPF程序员,我们可以把自定义的耗时的逻辑推到队列由
优先级为Dispatcher
类维护,并关联一个下级该工作项的优先级值。根据优先级字段的值相应的代码将在指定的时间间隔执行。这里需要注意的重要一点是,所有的工作仍在进行中但是,在DispatcherPriority
的帮助下,我们安排好任务的先后顺序。理想情况下,建议优先考虑值小于7(Render
)到我们希望的自定义逻辑在Dispatcher的帮助下执行。最常见的优先级值Background
用于特定于应用程序的定制逻辑。女士单词拼写检查是在这种机制的帮助下实现的ApplicationIdle
。