0

更新我的时ObservableCollection,我收到此错误:

这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection。

使用这个答案作为指导,我认为这段代码可以工作:

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);
    }
}

但是,我的 UI 现在在调用Dispatcher.Invoke(). 我做错了什么?

注意:我需要这样做,因为我(有时)会更新我ObservableCollection的事件。

4

1 回答 1

1

尝试这个:

Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, action);

您同步调用您的操作,它会导致 UI 冻结。

于 2013-04-20T16:19:54.177 回答