public ObservableCollection<College> Colleges { get; set; }
私のコレクションは大学データを保持しています。Dispatcherを使用した後に、「アプリケーションは別のスレッド用にマーシャリングされたインターフェイスと呼ばれる」例外をまだ受けています。
public static Task<College> getCollege(string uniqueid)
{
return Task.Run(() =>
Colleges.Where(coll => coll.UniqueID.Equals(uniqueid)).First()
);
}
個々の大学を取得するための実装。
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var college = await DataSource.getCollege((string)e.Parameter);
coll_grid.DataContext = college;
}
GUIは、これが私の最初の実装であり、それがうまく働いたが、その後、私はステファン・クリアリーによって、あなたが実装でTask.Runを使用してはならないことの趣旨をTask.Run Etiquetteをお読みください。
だから私は、私が得たこの
public static College getCollege(string uniqueid)
{
var match = CollegeData.Colleges.Where(coll => coll.UniqueID.Equals(uniqueid));
return match.First();
}
GUI
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var college = await Task.Run(() => DataSource.getCollege((string)e.Parameter));
coll_grid.DataContext = college;
}
その後、私はCoreApplicationを追加した例外
「アプリケーションが別のスレッドにマーシャリングされたインターフェイスと呼ばれる」私のコードを変更.MainView.Dispatcher.RunAsyncこれを修正するためのGUIコード。
GUI
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
await CoreApplication.MainView.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
{
var college = await Task.Run(() => DataSource.getCollege((string)e.Parameter);
coll_grid.DataContext = college;
});
}
しかし、私はまだ同じ例外エラーを取得しています。何が問題なのでしょうか?
私はそれを試みましたが、このコード行でも同じエラーが発生しています。 var大学は、Task.Run(()=> DataSource.getCollege((文字列)e.Parameter); –
を待つばかげたばかげたTask.Run –