3 回答
TA贡献2065条经验 获得超14个赞
public static void AddOnUI<T>(this ICollection<T> collection, T item) {
Action<T> addMethod = collection.Add;
Application.Current.Dispatcher.BeginInvoke( addMethod, item );}...b_subcollection.AddOnUI(new B());TA贡献1860条经验 获得超8个赞
.NET 4.5的新选项
CollectionChangedBindingOperations.EnableCollectionSynchronization 在您的UI线程中.
EnableCollectionSynchronization
记住调用它的线程,并导致数据绑定管道封送处理。 CollectionChanged线程上的事件。 在处理封送事件之前获取集合上的锁,以便运行UI线程的事件处理程序在从后台线程修改集合时不会尝试读取集合。
1.决定使用哪种锁
EnableCollectionSynchronizationlock
2.创建集合并启用同步
lockCollectionSynchronizationCallbacknullAction
3.合作,在修改之前锁定集合
lock()EnableCollectionSynchronization
TA贡献1798条经验 获得超7个赞
.Add
Application.Current.Dispatcher.BeginInvoke(new Action(() => this.MyObservableCollection.Add(myItem)));
.Remove
Application.Current.Dispatcher.BeginInvoke(new Func<bool>(() => this.MyObservableCollection.Remove(myItem)));
- 3 回答
- 0 关注
- 332 浏览
添加回答
举报
