1

我对我的应用程序进行了更改,以便在应用程序打开时在后台线程上加载数据(使用 async/await)。现在,在应用程序完全加载后,当尝试更新绑定属性时,我得到了这个异常:

PresentationFramework.dll 中出现“System.NotSupportedException”类型的第一次机会异常

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

在 async/await 更改首先更新该属性之前,此代码正在运行。我尝试在代码周围添加 Dispatcher.Invoke() ,但我得到了同样的错误:

System.Windows.Application.Current.Dispatcher.Invoke(() =>
{
    this._customVariableGroups[index] = savedGroup;
});

由于该字段最初是在后台线程上更新的,是否会导致从主线程更新它时出现问题?请注意,在 Visual Studio 的线程窗口中,此代码在主线程上执行。我不知道还能做些什么才能让它发挥作用。

这是字段:

private ObservableCollection<CustomVariableGroup> _customVariableGroups;
4

1 回答 1

4

听起来您的收藏视图是在后台线程上创建的,这通常不是一个好主意。

如果您使用async/加载数据await(并且您的数据加载支持异步操作),那么您不需要使用后台线程。

于 2013-11-12T21:59:31.973 回答