2012-12-20 7 views
3

J'écris un exemple d'application Windows Phone 8. J'ai également installé le cadre Async for .NET Framework 4, Silverlight 4 and 5, and Windows Phone. Mais, attendez sur une méthode n'attend pas et mon mainpage.xaml charge qui essaye d'accéder à une propriété qui n'a pas encore été remplie.Windows Phone 8 n'attend pas

Voici mon code.

public static ObservableCollection<Model.CatalogCategory> Products { get; set; } 
private async void Application_Launching(object sender, LaunchingEventArgs e) 
    { 
     ApplicationViewModel vm = new ApplicationViewModel(); 
     Products = await vm.LoadLocalDataAsync(); 

    } 

Après cette méthode, le MainPage.xaml est chargé qui tente d'accéder à « Produits » et renvoie une exception de référence null.

Y at-il une approche différente que je dois prendre?

Répondre

5

Vous n'avez pas compris la signification de Async et 'await' correctement. 'await' n'attend que le reste du code dans ce bloc de méthode. Le reste du code après la ligne d'attente est converti en un rappel qui n'est appelé qu'après l'achèvement de la tâche asynchrone. Et cela ne bloque pas toute la méthode. La méthode est traitée comme terminée et le contrôle revient à l'appelant.

Vous pouvez supprimer l''attente' ou essayer de charger les données dans l'événement MainPage_Loaded ou dans l'événement OnNavigatedTo. tout ce qui te va.