在继续使用应用程序之前,我一直在等待数小时等待异步方法完成。如果我调试一切都很好,因为我实际上正在等待异步方法完成,但没有调试代码执行时调用方法,没有任何作用。
这是我的代码:
private async void MenuPage_Loaded(object sender, RoutedEventArgs e)
{
MenuItems = await SetItemSource();
ItemSource = new ObservableCollection<AlphaKeyGroup<Menu>>((AlphaKeyGroup<Menu>.CreateGroups(MenuItems, CultureInfo.CurrentUICulture, s => s.MenuName, true)));
((CollectionViewSource)Resources["MenuGroups"]).Source = ItemSource;
}
private async Task<ObservableCollection<Menu>> SetItemSource()
{
return await MyWinService.GetMenuEntriesAsync();
}
答案 0 :(得分:0)
在SetItemSource方法中删除async / await。您正在返回一个等待任务,告诉MenuPage_Loaded在此时继续。 第二种方法不需要异步,因为没有延续。
答案 1 :(得分:0)
好的,我这样做了:
private async void MenuPage_Loaded(object sender, RoutedEventArgs e)
{
var MenuItemsTask = MyWinService.GetMenuEntriesAsync();
MenuItems = await MenuItemsTask;
ItemSource = new ObservableCollection<AlphaKeyGroup<Menu>>((AlphaKeyGroup<Menu>.CreateGroups(MenuItems, CultureInfo.CurrentUICulture, s => s.MenuName, true)));
((CollectionViewSource)Resources["MenuGroups"]).Source = ItemSource;
}
我发誓这不行,但我重新发布了我的ServiceReference(没有改变任何东西),突然它起作用,我的意思是,我不知道发生了什么,我讨厌不知道发生了什么哈哈。
感谢您的帮助。