1
A
回答
2
試一下
public class ObservableCollectionThreadSafe<T> : ObservableCollection<T>
{
// Override the event so this class can access it
public override event NotifyCollectionChangedEventHandler CollectionChanged;
public ObservableCollectionThreadSafe()
{
}
public ObservableCollectionThreadSafe(IEnumerable<T> items)
: base(items)
{
}
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
// Be nice - use BlockReentrancy like MSDN said
using (BlockReentrancy())
{
NotifyCollectionChangedEventHandler eventHandler = CollectionChanged;
if (eventHandler == null)
return;
Delegate[] delegates = eventHandler.GetInvocationList();
// Walk thru invocation list
foreach (NotifyCollectionChangedEventHandler handler in delegates)
{
DispatcherObject dispatcherObject = handler.Target as DispatcherObject;
// If the subscriber is a DispatcherObject and different thread
if (dispatcherObject != null && dispatcherObject.CheckAccess() == false)
{
// Invoke handler in the target dispatcher's thread
dispatcherObject.Dispatcher.Invoke(DispatcherPriority.DataBind, handler, this, e);
}
else // Execute handler as is
handler(this, e);
}
}
}
}
編輯:順便說一下,這不是我的代碼,它是在網絡上被人發現......所以「某人」如果你意識到你自己,你應該把它的信用...
相關問題
- 1. 創建可觀察列表/集合
- 2. 如何使異步數據可觀察?
- 3. 如何正確填充可觀察集合中的列表框?
- 4. 如何更新可觀察集合組
- 5. 透視可觀察集合
- 6. 只讀可觀察集合
- 7. 異步加載MVVM集合
- 8. 觀察集合
- 9. Silverlight 4 - 可觀察的集合(啓動時加載)
- 10. WPF觀察集合
- 11. DataTable觀察集合
- 12. 異步觀察者模式
- 13. 使用可觀察集合和列表框的問題 - Wpf
- 14. 使用MVVM更新列表視圖可觀察集合
- 15. 帶有對象列表的可觀察集合
- 16. 綁定到選定對象的可觀察集合列表?
- 17. 異步方法中的可觀察收集
- 18. 如何使用Silverlight中的另一個可觀察集合對一個可觀察集合進行排序
- 19. 如何迭代firebase2列表可觀察?
- 20. 如何遍歷AngularFire可觀察列表?
- 21. 將可觀察集合中的Observable集合綁定到列表框項目
- 22. 個人觀察集合VS篩選觀察到的集合表現
- 23. 如何複製觀察到的集合
- 24. 如何觀察店內集合
- 25. 如何觀察轉換的集合?
- 26. 如何觀察Ruby中的(mongo)集合?
- 27. 綁定可觀察集合到ListView
- 28. 可觀察集合OnNext沒有射擊
- 29. Silverlight DataGrid刷新可觀察集合
- 30. 用linq排序可觀察的集合
我已經使用了你之前在這裏發佈的代碼,它運行得很好。雖然現在我有另一個項目,我想要做類似的事情,但(出於工作原因)它需要在VB.NET中。 VB似乎並不喜歡像變量一樣使用事件,他說 「Public Shadows Event CollectionChanged(sender As Object,e As System.Collections.Specialized.NotifyCollectionChangedEventArgs)'是一個事件,不能直接調用。 'RaiseEvent'聲明提出一個事件。「 任何想法如何轉換? – JamesMLV 2012-04-19 00:56:38
猜猜我應該google更多。要在VB中完成這項工作(在正常轉換後),您只需在事件名稱後添加「Event」即可。它沒有在智能感知中顯示,但沒有提供任何錯誤和作品。 – JamesMLV 2012-04-19 00:59:46