[英]Wait for WCF async method to complete before continue
我一直在尝试几个小时,以等待异步方法完成,然后再继续应用程序。 如果我进行调试,那么一切都会很好,因为我实际上正在等待异步方法完成,但是在未调试的情况下,代码会在调用该方法时执行,并且没有任何效果。
这是我的代码:
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();
}
在SetItemSource方法中删除async / await。 您正在返回一个等待的任务,该任务告诉MenuPage_Loaded在这一点上继续执行。 第二种方法不需要异步,因为没有延续。
好的,我这样做了:
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(不做任何更改),突然它起作用了,我的意思是,我不知道发生了什么,我讨厌不知道发生了什么哈哈。
谢谢您的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.