该应用程序调用了一个为不同线程编组的接口。 (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))
在我的一个视图中,我实例化了一个选项视图。
不确定选项是否应该是完全独立的对象。
当用户修改选项时,我希望它更新主视图。
实例化的第一个视图。
public VideosFoundView()
{
this.InitializeComponent();
this.initAddVideoFolderGridView();
this.addVideoFolderScrollViewer.ViewChanged += addVideoFolderScrollViewer_viewChanged;
options = new vfvOptions();
options.PropertyChanged += optionsChanged;
AppShell.Current.SetOptions(options);
}
正如您所知,我在父视图的构造函数中实例化了vfvOptions视图,但是optionsChanged方法很难访问我在父视图中定义的内容。
private async void optionsChanged(object sender, PropertyChangedEventArgs e)
{
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
{
//parse the options object
await Task.Run(() =>
{
this._GridViewVideoModels.Clear();
for (int i = 0; i < VideosFoundView.MyVideoModels.Count - 1; i++)
{
bool displayTile = true;
if (options.IgnoreImagesNotFound)
if (VideosFoundView.MyVideoModels[i].FullImageLocationOnDisk == "ms-appx:///Assets/image-not-found.gif")
displayTile = false;
if (displayTile)
{
this._GridViewVideoModels.Add(VideosFoundView.MyVideoModels[i]);
}
}
this.AddVideoFolderGridView.ItemsSource = _GridViewVideoModels;
});
});
}
以上代码在:
处遇到异常 this._GridViewVideoModels.Clear();
这在ViewFoundView类中定义如下:
public ObservableCollection<MyVideo> _GridViewVideoModels = new ObservableCollection<MyVideo>();
我可能没有彻底了解事件,当事件被触发时,是从vfvOptions类/对象中触发的方法optionsChanged?
答案 0 :(得分:0)
问题是因为我在Task.Run()
中调用了该方法