C# async OnNavigatedTo有什么有趣的地方吗?

C# async OnNavigatedTo有什么有趣的地方吗?,c#,windows-8,C#,Windows 8,我有两页主页和设置页面 在主页中,在其on navigatedto方法中,我检查一些独立存储,如果不匹配,我希望应用程序导航到设置页面 OnNavigatedTo标记为async,因为我正在使用等待的方法检查变量。工作原理是它读取变量并报告它需要导航的内容,所以我调用 this.Frame.Navigate(typeof(SettingsPage)); 没有抛出任何错误。但是70%++的时候,我称之为导航方法,它什么都不做!页面之间的导航方式与Windows Phone不同吗?我在那里做了完全

我有两页<代码>主页和
设置页面

在主页中,在其
on navigatedto
方法中,我检查一些独立存储,如果不匹配,我希望应用程序导航到
设置页面

OnNavigatedTo
标记为
async
,因为我正在使用等待的方法检查变量。工作原理是它读取变量并报告它需要导航的内容,所以我调用

this.Frame.Navigate(typeof(SettingsPage));
没有抛出任何错误。但是70%++的时候,我称之为导航方法,它什么都不做!页面之间的导航方式与Windows Phone不同吗?我在那里做了完全相同的事情,但是使用URL而不是
typeof(XXXPage)

有什么好处?它似乎不遵循
async
标志,因为它有时会设法导航到设置页面。。。但70%以上的情况下,应用程序似乎忽略了
异步OnNavigatedTo
,并同步运行应用程序


我在导航事件上放置了一个Debug.WriteLine,每次它都会调用
Navigate(typeof(SettingsPage))
。。。但似乎在某个地方失败了?

我也遇到过同样的行为。以低优先级对新导航进行排队,以使第一页加载和应用程序初始化有机会完全完成

public async virtual Task NavigateAsync(Type sourcePageType)
{
    await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
        {
            ((Frame)Window.Current.Content).Navigate(sourcePageType);
        });
}

它在没有异步的情况下导航吗?没有。。。但是我现在看到的是,App.xaml.cs的OnLaunched:Window.Current.Activate()在导航之后被调用?这不是应用程序“激活”当它带来了第一页,我调用导航在Navigaltoto?我正在使用MVVM顺便说一下。除了调度的调度,您也可以考虑导航<代码>加载< /代码>事件。现在似乎导航100%的时间,相反,我从来没有找到它的底部,但这是唯一的方式,我曾经安全地重定向导航,而事情是引导。我想你可以在以后的某个时候选择重定向,但我想你会发现它更黑客(虽然我不认为这种异步方法是黑客,它只是说‘嘿,当你现在做的事情完成后,转到这个页面’,这是要求应用程序做的一件非常合理的事情)。另外,自从第七次世界大战以来,它一直对我有效。