3 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
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貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
.NET 4.5的新選項(xiàng)
CollectionChanged
BindingOperations.EnableCollectionSynchronization
在您的UI線程中.
EnableCollectionSynchronization
記住調(diào)用它的線程,并導(dǎo)致數(shù)據(jù)綁定管道封送處理。 CollectionChanged
線程上的事件。 在處理封送事件之前獲取集合上的鎖,以便運(yùn)行UI線程的事件處理程序在從后臺(tái)線程修改集合時(shí)不會(huì)嘗試讀取集合。
1.決定使用哪種鎖
EnableCollectionSynchronization
lock
2.創(chuàng)建集合并啟用同步
lock
CollectionSynchronizationCallback
null
Action
3.合作,在修改之前鎖定集合
lock()
EnableCollectionSynchronization

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
.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 關(guān)注
- 283 瀏覽
添加回答
舉報(bào)