私は粘着質な立場にいます。公開済みのアプリがあり、クラッシュ レポートを受け取っています。そのほとんどはですInvalidOperationException
。スタックトレースの 19 フレームすべてが内部関数を示しているため、どの関数がそれを発生させたかを特定できません。デバッグが多いので、InvalidOperation Exception は、ナビゲーションをログイン ページにリダイレクトする方法が原因であると思います。
基本操作はこんな感じ。ユーザーがパスワードを設定している場合は、パスワード ページに移動し、それ以外の場合は MainPage に移動します。コードは次のとおりです
App()
{
// the usual code
RootFrame.Navigating += new NavigatingCancelEventHandler(RootFrame_Navigating);
}
void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
{
if (e.Uri.ToString().Contains("/RootPage.xaml") != true)
return;
CycleManager pCycMan = CycleManager.Instance;
e.Cancel = true;
RootFrame.Dispatcher.BeginInvoke(delegate
{
if (pCycMan.GetPasswordEnabled())
RootFrame.Navigate(new Uri("/PasswordPage.xaml", UriKind.Relative));
else
RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
});
}
上記の RootPage は<App>
タグで定義されていますWMAppManifest.xml
<Tasks>
<DefaultTask Name="_default" NavigationPage="RootPage.xaml" />
</Tasks>
上記のコードをデバッグすると、StackTrace と同じコール スタックが見つかりました。これがメインページ以外のページに移動する正しい方法であるかどうか誰か教えてもらえますか? 以下に StackTrace を含めました
"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 1580
6 System.Windows.Controls.Frame.Navigate 80
7 .__c__DisplayClass5._Application_Activated_b__3 136
8 mscoree3_7.dll 429164
9 mscoree3_7.dll 185803
10 mscoree3_7.dll 84423
11 System.Reflection.RuntimeMethodInfo.InternalInvoke 112
12 System.Reflection.RuntimeMethodInfo.InternalInvoke 1564
13 System.Reflection.MethodBase.Invoke 104
14 System.Delegate.DynamicInvokeOne 564
15 System.MulticastDelegate.DynamicInvokeImpl 84
16 System.Windows.Threading.DispatcherOperation.Invoke 80
17 System.Windows.Threading.Dispatcher.Dispatch 404
18 System.Windows.Threading.Dispatcher.OnInvoke 56
19 System.Windows.Hosting.CallbackCookie.Invoke 84"
このような長い質問をお読みいただきありがとうございます。