2016-03-24 18 views
0

アプリケーションは、別のスレッド用にマーシャリングされたインターフェイスを呼び出しました。 (HRESULTからの例外:0x8001010E(RPC_E_WRONG_THREAD))私はオプションが、その中に表示インスタンス私の見解の一つでDispatcher.RunAsync(アプリケーションが別のスレッド用にマーシャリングされたインターフェイスを呼び出しました)

enter image description here

のオプションが完全に別個のオブジェクトであるかどうかはわかりません。

ユーザーがオプションを変更すると、メインビューが更新されます。

インスタンス化された最初のビュー。あなたが言うことができるよう

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;         
      }); 
     }); 
    } 

上記のコードはで例外をヒット、私はイベントの完全な理解を持っていない可能性があり

public ObservableCollection<MyVideo> _GridViewVideoModels = new ObservableCollection<MyVideo>(); 

ので、同じようViewFoundViewクラスで定義されている
this._GridViewVideoModels.Clear(); 

イベントは、optionsChangedメソッドがvfvOptionsクラス/オブジェクト内からトリガされてトリガされますか?

答えて

0

問題は、Task.Run()内からメソッドを呼び出したためです。

関連する問題