Windows Phone 8等待不等待

时间:2012-12-20 09:08:26

标签: windows-phone-7 .net-4.5 windows-phone-8

我正在编写一个示例Windows Phone 8应用程序。我还安装了框架Async for .NET Framework 4, Silverlight 4 and 5, and Windows Phone

但是,等待一个方法不等待,我的mainpage.xaml加载试图访问尚未填充的属性。

这是我的代码。

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

    }

在此方法之后,加载了mainpage.xaml,它尝试访问“Products”并抛出空引用异常。

我需要采取不同的方法吗?

1 个答案:

答案 0 :(得分:5)

您没有正确理解Async和'await'的含义。 'await'仅等待该方法块中的其余代码。 await行之后的其余代码将转换为仅在异步任务完成后调用的回调。这并不会阻碍整个方法。该方法被视为已完成,控制权将返回给调用者。

您要么删除'await',要么尝试在MainPage_Loaded事件或OnNavigatedTo事件中加载数据。什么都适合你。