微软似乎对 ObservableCollection 有一个好主意。它们非常适合绑定,并且在 UI 上非常快。
然而,每次你想要调整它时都需要一个上下文切换到 Dispatcher Thread 似乎有点多。有谁知道使用它们的最佳实践?是不是简单的在业务层填充一个ICollection作为消息对象,然后在UI层创建ObservableCollection?然后如何处理 UI 上的集合更新?
微软似乎对 ObservableCollection 有一个好主意。它们非常适合绑定,并且在 UI 上非常快。
然而,每次你想要调整它时都需要一个上下文切换到 Dispatcher Thread 似乎有点多。有谁知道使用它们的最佳实践?是不是简单的在业务层填充一个ICollection作为消息对象,然后在UI层创建ObservableCollection?然后如何处理 UI 上的集合更新?
更新 UI 线程上的 ObservableCollection 真的会给您的应用程序造成这么大的瓶颈吗?如果没有,请坚持在 UI 线程上更新它。请记住,当您使用 Dispatcher 运行某些东西时,这并不是真正发生的上下文切换 - 相反,您只是将作业提交给 UI 线程,这是一个已经在运行的线程,操作系统无论如何都会在某个时候切换到该线程. UI 线程将您提交的作业从内部队列中拉出并执行。您不会自己强迫上下文切换。
您也可以在 WPF 中使用旧的BackgroundWorker(如在 Windows 窗体中)。它将采用 WPF 的线程模型,并提供一个很好的抽象。