2010-11-01 69 views
0

是否有可能更新大量的ObservableCollection(即添加项目),而不垂到U.I.?更新一个ObservableCollection没有挂在UI

我想知道如果这是事实,我有每个迭代将项目添加到集合中相对较大的循环(500次迭代)。

OR,无论是事实,收集被刷新,并通知改变的UI。

OR ...一举两得!

我也碰到过这个线程,但可能是一个不同的问题完全关于调度(为什么会使用调度帮助吗?): Using BackgroundWorker to update the UI without freezes...?

回答

1

检查这个previous SO answer

的ObservableCollection不允许禁用和重新启用被更改触发的事件,但似乎你可以与BindingList

+0

酷。我希望SL有约束力的名单。如果可以的话,我一定会走这条路。但是,现在,我想知道是否通过Dispatcher更新异步完成事件的集合将有助于缓解UI“冻结”。任何人都可以证实或否认这一点? – AlvinfromDiaspar 2010-11-01 19:15:58

+0

使用调度程序将无济于事。所有这些都是为你准备的跨元线程访问。 (例如,如果你想从不同的线程更新一些UI,你可以使用Dispatcher来调用UI命令。)每当集合被修改时,你的集合仍然会引发事件,并且任何监听器都会被通知。由于他们正在使用多播委托来订阅事件,因此他们的通知会进入新线程,因此它们不会被阻止或阻止您的可观察集合更新。你可以让你的更新IEnumerable然后使ObservableCollection? – 2010-11-01 22:52:35

相关问题