使用this代码,我得到NullReferenceException
个thimethimes(10次中的4/5),这肯定是因为用于插入范围的线程不是Dispatcher
线。我没有收到异常,如果我像这样包装链接文章的GetOrders
方法的最后三行:
App.Current.Dispatcher.Invoke(() =>
{
if (type == "buy") CheckNumberAndAdd(orderList, BuyOrders);
else CheckNumberAndAdd(orderList, SellOrders);
CheckNumberAndAdd(pendingList, PendingOrders);
});
我不想在ViewModel中使用此包装器。我希望它可以在链接的帖子中显示的AsyncObsetion<T>
的实现中实现,因此我将InsertRange
的{{1}}替换为以下内容:
AsyncObsetion<T>
使用此方法,当我从public void InsertRange(IEnumerable<T> items)
{
if (SynchronizationContext.Current == context)
{
foreach (var item in items) Items.Add(item);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
else
{
App.Current.Dispatcher.Invoke(() => { foreach (var item in items) Items.Add(item); });
context.Send(RaiseCollectionChanged, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
}
中创建PendingOrders
时,我在Pendings
中得到了977个(预期)或976个(比实际少1个)项目,但我仍然得到了{ {1}}有时即使PendingOrders
中有977个项目!