WPF BindingOperations.EnableCollectionSynchronization + ObservableCollection + Reentrancy

时间:2018-08-03 12:47:09

标签: wpf thread-safety observablecollection

首先,我的头衔很糟糕,而且手头上很清楚我的问题。

我正在生成类似文件系统的结构。文件和文件夹存储在本地sqlite数据库中,您具有文件实体和文件夹实体。

首次打开屏幕时,转到本地db并获取数据并将其推入ObservableCollection。这是在新的后台线程上完成的。

这是问题所在,如果您有50,000个项目,似乎WPF的新BindingOperation机制用于跨线程集合访问,它做了一些特殊的技巧,将所有对UI的更改排队在另一个线程上,然后将其滴入Dispatcher。 / p>

现在,我显然无法控制它的执行方式。但是我的问题是,在这些情况下如何处理重入?如果用户要垃圾邮件单击我拥有的重新加载按钮,我该如何取消所有这些缓慢且未决的排队UI更新,或者我如何知道仍有许多未决UI更新?

更新似乎很慢,因为50,000个项目需要至少一分钟或2分钟才能完全将所有项目处理到列表中。

0 个答案:

没有答案