有关使用Dispatcher优先级和绑定的建议

时间:2011-09-19 20:40:36

标签: c# wpf binding dispatcher

在我的应用程序中,我正在使用UI线程的空闲时间来卸载MSDN article on the WPF Threading Model所述的昂贵操作。

GenerateDataAction = () => { GenerateData(); };
Dispatcher.BeginInvoke(GenerateDataAction, DispatcherPriority.Render, null);

GenerateDate()方法中,我访问MSSQL数据库,处理数据,并更新viewmodel上的绑定。我注意到,自从实现这一点后,某些绑定无法正常更新或根本无法更新。我检查输出是否存在绑定错误并让第二个程序员确认逻辑,还在依赖属性更改方法中设置了断点(断点不会被命中)。

当被调用的动作包含绑定时,是否应该使用哪些 DispatcherPrioritylink to MSDN)的最佳实践建议?

1 个答案:

答案 0 :(得分:3)

关于WPF调度程序的一篇非常好的文章:http://weblogs.asp.net/pawanmishra/archive/2010/06/06/understanding-dispatcher-in-wpf.aspx

  

作为WPF程序员,我们可以将自定义耗时的逻辑推入   由Dispatcher类维护的队列并关联较低的队列   该工作项的优先级值。基于优先级字段的值   相应的代码将以指定的间隔执行。   这里需要注意的重要一点是,所有工作仍在进行中   通过UIthread,它只是在我DispatcherPriority的帮助下   优先考虑我们的任务。理想情况下,建议优先考虑   值小于7 Render)到我们希望的自定义​​逻辑   在Dispatcher的帮助下执行。最常见的是优先价值   Background用于特定于应用程序的自定义逻辑。女士   在这种机制的帮助下实现单词拼写检查   优先级值为ApplicationIdle