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

有人能说出这段代码有什么问题吗?

4

3 回答 3

3

我看到InvalidOperationException发生这种情况的一种常见情况是,如果同时尝试多个导航,或者在应用程序不在前台时发生导航尝试。

例如,如果用户在缓慢导航发生时设法再次点击应用栏按钮,则可能会发生这种情况。

快速搜索显示其他人也看到过同样的事情 - 例如http://www.nickharris.net/2011/01/windows-phone-7-navigation-is-not-allowed-when-the-task-is-不在前台/

于 2012-05-14T16:03:53.647 回答
0

尝试使用if (scrObj.NavigationService.CurrentSource.equals(navigateUritemp))也许这会有所帮助。您是否一直遇到此异常?

于 2012-05-14T12:48:36.647 回答
0

尝试执行以下操作:

  1. 创建一个新项目并删除其余代码并保留与 NavigationService 相关的代码。
  2. 创建一个文件夹(将文件夹命名为主屏幕)
  3. 添加 2 个 XAML 页面(例如:Page1.xaml、Page2.xaml)
  4. 从 MainPage.xaml 测试 NavigationService 代码

    试试这个:

    NavigationService.Navigate(new Uri("/homescreen/Page1.xaml", UriKind.Relative));

    NavigationService.Navigate(new Uri("/homescreen/Page2.xaml", UriKind.Relative));


如果您使用 UriKind.Relative 确保指定正确的路径,例如:如果您使用“homescreen/Page2.xaml”它想要工作,您必须使用“/homescreen/Page2.xaml”、“/”开头你的路径就像 ASP.NET 中的“root”或“~”

于 2012-05-14T13:05:01.393 回答