public ObservableCollection<College> Colleges { get; set; }
대학 데이터를 보유한 My collection.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를 참조하십시오.
그래서 난 내 코드 나는가 그럼 난 CoreApplication을 추가 예외 "응용 프로그램이 다른 스레드 정렬 화 된 인터페이스를 소위"가지고
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var college = await Task.Run(() => DataSource.getCollege((string)e.Parameter));
coll_grid.DataContext = college;
}
이
public static College getCollege(string uniqueid)
{
var match = CollegeData.Colleges.Where(coll => coll.UniqueID.Equals(uniqueid));
return match.First();
}
GUI 변경 .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 college = Task.Run (() => DataSource.getCollege ((string) e.Parameter); –
그냥 바보 같은 Task.Run –