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