一般在异步方法或线程中更新UI都采用:
Dispatcher.BeginInvoke(()=>
{
//更新UI.
NavigationService.Navigate(new Uri("/OK.xaml", UriKind.Relative));
});
但是我在开发过程中遇到的情况是,有时候NavigationService.Navigate执行正常,返回了true,也没有发生任何异常,但就是转不到下一页,卡在了这里,这种情况多发生在墓碑后,重启应用时,我分析了我的代码流程,逻辑无数遍,就是找不到问题,最后我执行了两遍NavigationService.Navigate就成功了,我推测可能是异步方法执行的太快,navigate没有执行,再我也想不出来什么原因,如果有能解释的朋友,欢迎告诉我一声。
我是这样办的:
Dispatcher.BeginInvoke(()=>
{
NavigationService.Navigate(new Uri("/ProcessContacts.xaml?type=" + "add", UriKind.Relative));
NavigationService.Navigate(new Uri("/ProcessContacts.xaml?type=" + "add", UriKind.Relative));
});