我正在開發Windows Phone應用程序。 我將它提交給Microsoft,他們向我發回了一個描述恢復應用程序時發生錯誤的文件(它與5.2性能和資源管理相關,點5.2.3)。Windows Phone應用程序在恢復時出現異常
重現錯誤,我運行應用程序,我開始啓動按鈕去「桌面」,然後單擊「返回」按鈕。 之後,在黃色的System.Diagnostics.Debugger.Break();
線Visual Studio的亮點在此代碼
// Code to execute on Unhandled Exceptions
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
}
隨着堆棧跟蹤,我發現,最後調用的方法是CallApplicationUEHandler
。
那麼,這是一個已知的例外嗎?我忘了處理一些例外嗎?
下面是最後三行輸出的正上方CallApplicationUEHandler的呼叫:
first chance exception 'System.ArgumentNullException' in Microsoft.Phone.Controls.dll
first chance exception 'System.ArgumentException' in System.Windows.dll
first chance exception 'System.ArgumentException' in System.Windows.dll
的構造函數:
對於的MainPage:
public MainPage()
{
journal.Debug(string.Format("Entrée méthode {0}", new StackTrace().GetFrame(1).GetMethod().Name));
InitializeComponent();
Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
mainVM = new MainViewModel();
DataContext = mainVM;
}
對於應用程序:
public App()
{
// Global handler for uncaught exceptions.
// Note that exceptions thrown by ApplicationBarItem.Click will not get caught here.
UnhandledException += Application_UnhandledException;
// Standard Silverlight initialization
InitializeComponent();
// Phone- {2} -specific initialization
InitializePhoneApplication();
}
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
}
「CallApplicationUEHandler」是最重要的事情,因爲這是將事件鏈關閉到未處理的異常處理程序的原因。堆棧跟蹤的* rest *是什麼?在堆疊下面的東西會給我們更多的信息來幫助你。有更多細節的'InnerException'嗎? –
@John Gardner:我什麼都沒有。但是最後三個調試行包含第一次機會異常。我編輯了帖子以顯示他們。 – Zakaria
在您首次離開之前,您是否確認該應用程序已完成完全加載? –