在我的WPF应用程序中,我有很多线程有时需要更新UI。 当我需要更新UI元素时,需要执行从后端线程到UI线程的上下文切换。我通过以下代码来做到这一点:
Application.Current.Dispatcher.BeginInvoke(action, DispatcherPriority.Send);
基本上,需要在UI线程上执行的所有操作都非常快,只需几毫秒(更新可见性,更改颜色等)。
我的问题是,上下文切换有时需要花费一些时间,因此我通过收集UI操作并通过单个上下文切换执行这些操作来解决了这一问题。
我可以通过使用DispatcherPriority进行任何改进吗?这方面有哪些最佳实践?
我读过一篇文章,建议使用优先级小于7的文件,这不是我的情况。我使用DispatcherPriority.Send(为10)
现在作为WPF程序员,我们可以将自定义耗时的逻辑推送到“ Dispatcher”类维护的队列中,并将较低优先级的值与该工作项相关联。根据优先级字段的值,将以指定的间隔执行相应的代码。这里要注意的重要一点是,所有工作仍由UIthread来完成,只是在DispatcherPriority的帮助下,我们对任务进行了优先排序。理想情况下,建议为希望在分派器的帮助下执行的自定义逻辑赋予小于7(render)的优先级值。
https://weblogs.asp.net/pawanmishra/understanding-dispatcher-in-wpf
总的来说,参与ui线程队列的执行优先级也是一种好习惯吗?