Frame Image Function Offset
0 coredll.dll xxx_RaiseException 19
1 mscoree3_7.dll 436488
2 mscoree3_7.dll 386545
3 mscoree3_7.dll 540936
4 TransitionStub 0
5 System.Windows.Navigation.NavigationService.Navigate 1652
6 XXX.Components.pushScreen 172
7 XXX.pushHomeScr 996
8 XXX.update 1488
9 .__c__DisplayClass3._ResponseReady_b__0 700
10 mscoree3_7.dll 429164
11 mscoree3_7.dll 185803
12 mscoree3_7.dll 184423
13 System.Reflection.RuntimeMethodInfo.InternalInvoke 112
14 System.Reflection.RuntimeMethodInfo.InternalInvoke 1556
15 System.Reflection.MethodBase.Invoke 104
16 System.Delegate.DynamicInvokeOne 476
17 System.MulticastDelegate.DynamicInvokeImpl 84
18 System.Windows.Threading.DispatcherOperation.Invoke 80
19 System.Windows.Threading.Dispatcher.Dispatch 404
我使用以下代码推送新页面
Uri navigateUritemp = new Uri(url, UriKind.RelativeOrAbsolute);
if(scrObj.NavigationService.CurrentSource != navigateUritemp)
{
scrObj.NavigationService.Navigate(navigateUritemp);
}
看起来以下行正在抛出invalidoperationexception
scrObj.NavigationService.Navigate(navigateUritemp);
有人可以告诉这段代码有什么问题吗?
答案 0 :(得分:3)
我见过这种InvalidOperationException
的一种常见情况是,如果同时尝试多次导航,或者在应用不在前台时发生导航尝试。
例如,如果用户在慢速导航过程中第二次设法点击了一个appbar按钮,就会发生这种情况。
快速搜索显示其他人已经看到了同样的事情 - 例如http://www.nickharris.net/2011/01/windows-phone-7-navigation-is-not-allowed-when-the-task-is-not-in-the-foreground/
答案 1 :(得分:0)
尝试使用if (scrObj.NavigationService.CurrentSource.equals(navigateUritemp))
也许这会有所帮助。你是否一直得到这个例外?
答案 2 :(得分:0)
尝试执行以下操作:
从MainPage.xaml测试NavigationService代码
试试这个:
NavigationService.Navigate(new Uri(“/ homescreen / Page1.xaml”,UriKind.Relative));
或的
NavigationService.Navigate(new Uri(“/ homescreen / Page2.xaml”,UriKind.Relative));
如果您正在使用UriKind。相关请确保指定正确的路径,例如:如果您使用“homescreen / Page2.xaml”它想要工作,您必须在开头使用“/homescreen/Page2.xaml”,“/”您的路径就像ASP.NET中的“root”或“〜”