繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM