我正在使用 C#/WPF 编写下载管理器,我刚刚遇到了此错误:
This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread.
我的程序的基本流程是,一些网页/下载在开始时排队,然后异步下载。当 HTML 页面下载完成后,我会对其进行解析并查找更多要下载的内容,然后直接从工作线程中将其排入队列。
当我尝试在自定义队列类上发送 CollectionChanged
事件时,出现该错误。但是,我需要触发该事件以便 GUI 可以更新。
我有什么选择?
最佳答案
您可能想查看 Reactive Extensions来自微软,它们就是为这类事情而设计的。它们创建“可观察集合”,并且在并行和多核场景中很有用。
更新:
您还可以找到 SyncronizationContext也很有用。这是一个 Windows 窗体示例,但 WPF 也有一些变体。
关于c# - 跨线程的 CollectionChanged 通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785979/