3 回答
TA贡献1831条经验 获得超4个赞
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贡献1874条经验 获得超12个赞
.NET 4.5的新选项
CollectionChanged
BindingOperations.EnableCollectionSynchronization
在您的UI线程中.
EnableCollectionSynchronization
记住调用它的线程,并导致数据绑定管道封送处理。 CollectionChanged
线程上的事件。 在处理封送事件之前获取集合上的锁,以便运行UI线程的事件处理程序在从后台线程修改集合时不会尝试读取集合。
1.决定使用哪种锁
EnableCollectionSynchronization
lock
2.创建集合并启用同步
lock
CollectionSynchronizationCallback
null
Action
3.合作,在修改之前锁定集合
lock()
EnableCollectionSynchronization
TA贡献1772条经验 获得超6个赞
.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 关注
- 429 浏览
添加回答
举报