直接从 WPF 应用程序中的工作线程修改 ObservableCollection
会引发异常。 这是 WPF 线程模型的结果,旨在在后台任务期间保持 UI 响应能力。
BindingOperations.EnableCollectionSynchronization
.NET 4.5 引入了一个简化的解决方案:BindingOperations.EnableCollectionSynchronization
。 从UI线程调用,这个方法:
CollectionChanged
事件被编组回 UI 线程。虽然EnableCollectionSynchronization
显着提高了线程安全性,但开发人员仍然必须遵守最佳实践:
ObservableCollection
时保持一致锁定,使用传递给 EnableCollectionSynchronization
的相同机制。lock
语句通常就足够了,但在复杂的场景中可能需要自定义同步。EnableCollectionSynchronization
对于正确的功能至关重要。 否则可能会导致意外行为。以上是如何从 .NET 4.5 中的后台线程安全地更新 ObservableCollection?的详细内容。更多信息请关注PHP中文网其他相关文章!