更新我的ObservableCollection
时,我收到了此错误:
此类型的CollectionView不支持对其进行更改 来自与Dispatcher线程不同的线程的SourceCollection。
使用this answer作为指南,我认为此代码可行:
private ObservableCollection<string> _userMessages = new ObservableCollection<string>();
public void AddUserMessage(string message)
{
lock (_locker)
{
Action action = () =>
{
this._userMessages.Add(message);
};
Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, action);
}
}
但是,我的用户界面现在在调用Dispatcher.Invoke()
时冻结。我做错了什么?
注意:我需要这样做,因为我(有时)从事件中更新我的ObservableCollection
。
答案 0 :(得分:1)
试试这个:
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, action);
您同步调用操作,导致UI冻结。