我正在寻找一个ObservableCollection
线程安全的替代品,在 UI 线程上引发事件,最好有一个AddRange
方法。我在这里和其他地方看到过一些实现,但我更喜欢经过测试和验证的实现,而且我不必自己维护。
那么任何人都可以向我指出这样的替代品,最好通过 NuGet 获得?
我正在寻找一个ObservableCollection
线程安全的替代品,在 UI 线程上引发事件,最好有一个AddRange
方法。我在这里和其他地方看到过一些实现,但我更喜欢经过测试和验证的实现,而且我不必自己维护。
那么任何人都可以向我指出这样的替代品,最好通过 NuGet 获得?
对于线程安全集合,请检查System.Collections.Concurrent命名空间。ConcurrentStack 有一个 PushRange 方法,可以在栈顶插入多个对象。
您可以尝试使用 Microsoft 的BulkObservableCollection,尽管我不确定他们为什么将它放在如此奇怪的命名空间中!当我尝试在 VS2012 中“添加引用...”时没有看到它,必须手动浏览到 C:\Windows\Microsoft.NET\assembly\GAC_MSIL
您可以尝试这里描述的一种:
http://deanchalk.com/2010/02/01/thread-safe-dispatcher-safe-observable-collection-for-wpf/
这是博客文章中的完整实现。它可作为源(来自该页面)提供,因此它可能不符合您的测试/验证标准。
我没有使用过它,所以我不能保证它工作得如何(或没有)。
更新:旧链接已损坏。我用当前链接替换了它。Dean Chalk 实际上是 SO 的成员,所以这里有一个指向他的 SO 个人资料的链接,以防它再次中断: