C# 不熟悉被动扩展(Rx),正在尝试在其他线程中运行CollectionView.Refresh()。怎么用?

C# 不熟悉被动扩展(Rx),正在尝试在其他线程中运行CollectionView.Refresh()。怎么用?,c#,wpf,multithreading,system.reactive,collectionview,C#,Wpf,Multithreading,System.reactive,Collectionview,我有大量的数据,将ListView、DataGrids与CollectionView绑定,并使用OnFilter事件过滤CollectionView 因此,当为CollectionView加载数据时,以及当string属性FilterString更改时,它会在Setter上调用CollectionView.Refresh(),这些操作会将屏幕锁定得太长,因此我尝试使用不同的线程加载数据和过滤数据,但由于CollectionView不支持不同的线程,程序崩溃 有人能给我一些指导,如何让RX在这方面

我有大量的数据,将ListView、DataGrids与CollectionView绑定,并使用OnFilter事件过滤CollectionView

因此,当为CollectionView加载数据时,以及当string属性
FilterString
更改时,它会在Setter上调用
CollectionView.Refresh()
,这些操作会将屏幕锁定得太长,因此我尝试使用不同的线程加载数据和过滤数据,但由于CollectionView不支持不同的线程,程序崩溃

有人能给我一些指导,如何让RX在这方面发挥作用吗

培训视频或文章与样本代码将不胜感激


非常感谢

简而言之,你不能。您需要在UI线程上调用
CollectionView.Refresh()
。Rx不会改变这一点


但是,您可以从中使用
ReactiveCollection
,而不是使用
CollectionView
进行过滤。这将需要更多的工作,但如果您热衷于使用Rx,那么这可能是最好的方法。

谢谢您的评论。。。还有令人震惊的消息。那么你对过滤数据集有什么建议吗?我只能考虑保留一个基本数据集,绑定一个视图目的数据集,并在每次需要过滤时清除和添加实体。在这种情况下,我应该能够使用RX将操作放在后台线程中。