【发布时间】:2011-03-02 23:07:41
【问题描述】:
我希望能够快速将项目添加到数据网格而不会导致 UI 延迟。
这是我现在正在做的事情: 我正在使用绑定到数据网格的 ObservableCollection。
我使用一个后台线程,该线程仅在从可观察集合中插入/删除时循环并调用当前调度程序上的 Invoke。相反,调用 BeginInvoke 会产生不良结果。
我知道在调度程序上调用这么多会导致延迟,但我不知道还能做什么。我以前使用过后台工作人员,但我认为这不适用于我的场景。
我可以做些什么来保持 UI 响应?
【问题讨论】:
-
您的收藏包含多少项目,您要添加多少项目?插入之后是否还有其他代码(例如 CollectionChanged 处理,或在绑定项目时运行的代码)?
-
集合从 0 项开始,每次添加一项。如果超过 10 个,则将删除一个。当我每秒添加大约 100 个项目时,用户界面会滞后。如果集合中的项目超过 10 个,则插入后除了删除之外没有额外的代码。
标签: c# wpf multithreading dispatcher