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()ました。私は間違って何をしていますか?

注: ObservableCollectionfrom イベントを (時々) 更新しているため、これを行う必要がありました。

4

1 に答える 1