0
目前,我有一个ObservableCollection:的ObservableCollection异步项目不增加
private readonly object _outputCollectionLock = new object();
private ObservableCollection<ChatterOutput> _outputs;
public ObservableCollection<ChatterOutput> Outputs
{
get { return _outputs; }
set
{
_outputs = value;
BindingOperations.EnableCollectionSynchronization(_outputs, _outputCollectionLock);
}
}
的问题与我的一个事件处理程序产生的。当事件处理程序被分派我加入一个新的对象,像这样:
lock (_outputCollectionLock)
{
Outputs.Add(new ChatterOutput{Option = option});
}
在我锁后设置的任何断点,我可以看到被添加到集合的新项目。但是,如果我在不同的时间断点,我看不到添加新的元素。
我试过在Application.Current.Dispatcher
上调用它,但是这并没有改变任何东西。使用这些集合的唯一的另一件事是一个XAML绑定,它是Mode=OneWay
。
这是一个线程问题,还是我完全错过了一些东西?
谢谢
你能告诉我们你是如何尝试使用调度程序?对于'ObservableCollection'还有一件事,你不能在XAML的'CollectionViewSource'中使用它。 – XAMlMAX
在Dispatcher.BeginInvoke调用中包装该添加调用。 – Gilad
首先移除'BindingOperations.EnableCollectionSynchronization(_outputs,_outputCollectionLock);'并将它移到你的'ViewModel'的构造函数中。我试着用你的代码使用任务,它很好地工作。 – AnjumSKhan