使用ObservableCollection<T>与后台线程

6

看起来Microsoft用ObservableCollection想出了一个好主意。它们非常适合绑定,在UI上运行速度超快。

然而,每次想要微调它时都需要切换到Dispatcher线程似乎有点过分。有人知道使用它们的最佳实践吗?是简单地将ICollection作为消息对象在业务层中填充,然后在UI层中创建ObservableCollection吗?那么如何处理UI中对集合的更新呢?

2个回答

2

在UI线程中更新ObservableCollection是否真的会对您的应用程序造成如此大的瓶颈?如果不是,请继续在UI线程上更新它。请记住,当您使用Dispatcher运行某些内容时,并不会发生真正的上下文切换 - 相反,您只是向已经在运行的UI线程提交作业,这是操作系统将在某个时刻上下文切换到的线程。UI线程从内部队列中取出您提交的作业并执行它。您并没有强制进行上下文切换。


除非是同步操作,否则它不会发生上下文切换。 - Amsakanna
当操作系统从一个线程切换到另一个线程时,总是存在上下文切换的情况。但是,“除非它是同步操作”,你在说什么? - Rob

1

在WPF中,您仍然可以使用好老的BackgroundWorker(就像在Windows Forms中一样)。它将适应WPF的线程模型,并提供了良好的抽象化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接