等待WCF异步方法完成后再继续

时间:2015-07-25 05:38:05

标签: c# wcf asynchronous win-universal-app

在继续使用应用程序之前,我一直在等待数小时等待异步方法完成。如果我调试一切都很好,因为我实际上正在等待异步方法完成,但没有调试代码执行时调用方法,没有任何作用。

这是我的代码:

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

        }

2 个答案:

答案 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(没有改变任何东西),突然它起作用,我的意思是,我不知道发生了什么,我讨厌不知道发生了什么哈哈。

感谢您的帮助。