【发布时间】:2011-10-07 04:33:24
【问题描述】:
即使NavigationService.CanGoBack 返回True,NavigationService.GoBack() 也会抛出这些异常:
A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in
这在两种情况下系统地发生,而第三种情况正常:
- 如果我在
OnNavigatedTo()中调用NavigationService.GoBack()会崩溃 - 如果我打电话给
NavigationService.GoBack()会崩溃由于在我的HTTPWebRequest中抛出WebException而导致在互联网不可用时 [1] - 如果 Internet 可用,并且当我的
HTTPWebRequest得到结果、解析并显示结果时,我会调用NavigationService.GoBack()。
我的理论是我不能在从一个页面导航到另一个页面后过早调用GoBack()...我的问题:当HTTPWebRequest 失败时,我如何以编程方式返回导航堆栈加载?
编辑:我决定换一种方式,但我认为我的问题可能是由于导航动画和 Windows Phone C# Toolkit(我使用 2011 年 2 月版)
[1] 我在案例 2 中的代码详情:
我有一个简单的HTTPWebRequest。我的回调会这样做,并且我的应用程序在飞行模式下崩溃。 NavigationService.GoBack() 行负责,即使 NavigationService.CanGoBack 返回 true。
try
{
response = request.EndGetResponse(result);
}
catch (WebException)
{
Dispatcher.BeginInvoke(() =>
{
NavigationService.GoBack();
});
}
我也尝试使用Deployment.Current.Dispatcher.BeginInvoke()。
【问题讨论】:
-
我的第一个猜测是,您必须确保在 UI 线程上执行 NavigationService.GoBack(),但这显然是您正在做的事情......您是否检查过您正在导航的页面返回正在加载?如果导致这些异常,可能是那个页面?
-
你是对的。如果我做
NavigationService.GoBack()而不是HTTPWebRequest然后GoBack() 在一个catch 我有同样的例外!但我什至没有找到我的OnNavigatedTo!如果我有 Internet,请执行 Web 请求并在请求成功后在主线程上调用 GoBack,但它可以工作。我的猜测是如果它发生得太快,GoBack 会失败?我会更新我的问题
标签: windows-phone-7 httpwebrequest dispatcher navigationservice