2015-07-25 4 views
0

Я пытаюсь в течение нескольких часов ждать завершения асинхронного метода, прежде чем продолжить работу с приложением. Если я отлаживаю все работает отлично, потому что я действительно жду, когда метод async будет завершен, но без отладки кода выполняется при вызове метода, и ничего не работает.Дождитесь завершения асинхронного метода WCF перед продолжением

Вот мой код:

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

частная Task > SetItemSource() { возвращение MyWinService.GetMenuEntriesAsync(); } –

ответ

0

Удалите асинхронной/Await в методе SetItemSource. Вы возвращаете ожидаемую задачу, которая говорит MenuPage_Loaded продолжать в этот момент. Async не требуется во втором методе, так как нет продолжения.

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 (не меняя ничего), и вдруг он работает, я имею в виду, я не знаю, что происходит, Я ненавижу не знать, что случилось, ха-ха.

Спасибо за помощь.

+0

Nevermind, он начал работать, и теперь он снова не работает. –

+0

Хорошо, я думаю, что знаю, что происходит, иногда я получаю сообщение «У вашего сервиса было размещенное сообщение рядом с часами», когда это происходит, все работает, но иногда оно не размещено, почему? –

Смежные вопросы