C# 向可观察集合添加项导致集合视图异常

C# 向可观察集合添加项导致集合视图异常,c#,wpf,multithreading,C#,Wpf,Multithreading,因此,我有一个可观察集合,我向其中添加了一个项目,如下所示: Items.AddFromThread(svm); public static void AddFromThread<T>(this ICollection<T> s, T obj) { if (System.Windows.Application.Current.Dispatcher.Thread != System.Threading.Thread.CurrentThread) {

因此,我有一个
可观察集合
,我向其中添加了一个项目,如下所示:

Items.AddFromThread(svm);
public static void AddFromThread<T>(this ICollection<T> s, T obj)
{
    if (System.Windows.Application.Current.Dispatcher.Thread != System.Threading.Thread.CurrentThread)
    {
        System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() => s.AddFromThread(obj)), null);
    }
    else
    {
        s.Add(obj);
    }
}
filteredItems = CollectionViewSource.GetDefaultView(Items);
其中,
AddFromThread
是一个如下所示的扩展方法:

Items.AddFromThread(svm);
public static void AddFromThread<T>(this ICollection<T> s, T obj)
{
    if (System.Windows.Application.Current.Dispatcher.Thread != System.Threading.Thread.CurrentThread)
    {
        System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() => s.AddFromThread(obj)), null);
    }
    else
    {
        s.Add(obj);
    }
}
filteredItems = CollectionViewSource.GetDefaultView(Items);
那么这里发生了什么?如果我是从UI线程添加的,
CollectionView
不应该从同一线程更新吗?如果没有,我如何使它这样做


更糟糕的是,这在很长一段时间内运行良好,据我所知,我没有改变任何可能影响这一点的事情。

好的-进行一点调查,发现
CollectionView
是在不同的线程上创建的,这似乎是问题的根源。虽然为什么它以前似乎不是一个问题仍然令人费解

因此我修复了它,以确保创建
CollectionView
的代码也在
Dispatcher.Thread
上运行。在这种情况下,错误消息具有误导性。问题不是我试图从一个非UI线程添加,而是我从一个UI线程添加,而是添加到另一个线程上的东西