【发布时间】:2013-04-20 16:07:38
【问题描述】:
更新我的ObservableCollection 时,我收到了这个错误:
这种类型的 CollectionView 不支持对其进行更改 SourceCollection 来自与 Dispatcher 线程不同的线程。
使用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() 时,我的 UI 现在会冻结。我做错了什么?
注意:我需要这样做,因为我(有时)会从事件中更新我的 ObservableCollection。
【问题讨论】:
-
userMessages.CollectionChanged 中发生了什么?
-
@Filip 我没有覆盖
ObservableCollection中的任何功能。
标签: c# multithreading events