【发布时间】:2016-03-24 13:08:58
【问题描述】:
应用程序调用了一个为不同线程编组的接口。 (来自 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方法吗?
【问题讨论】:
标签: c# multithreading winforms