或許你會注意到,在Silverlight for Windows Phone程式中,並沒有之前的類似於“App.Exit()”之類的函數用來讓你退出程式。這是怎麼回事兒呢?
很簡單,在Windows Phone 7中系統要求配備了硬體的“Back”鍵,該鍵用於在程式中導航(返回)到上一個頁面(螢幕)或者應用程式。當菜單、對話方塊、搜尋方塊、虛擬鍵盤等開啟時,點擊它則關閉菜單、對話方塊、搜尋方塊和虛擬鍵盤等。
當應用程式停留在該程式的第一個介面的時候,如果按下返回鍵,則該程式會自動關閉並回到開啟該程式的上一個介面。由於該動作是系統預設用來關閉程式的方法,所以並不需要你在代碼中強行退出該程式。所以,微軟並沒有留下退出程式的函數供你調用。
如果。。。嗯,我是說如果你非要在代碼中關閉程式呢?也不是沒辦法。
第一種辦法,調用XNA中的退出方法,為了節約系統資源,XNA中提供了離開遊戲的方法:
- 添加對Microsoft.Xna.Framework.Game的引用;
- 調用Game.Exit()來退出程式。
但是請注意,不要使用該方法。因為該方法違反了微軟的應用程式驗證的規範,將會導致你的程式無法提交到Marketplace中去。
第二種方法,拋出自訂的Quit異常來退出程式:
在App.xaml.cs檔案中的App類添加如下代碼:
Code Snippet
- private class QuitException : Exception { }
- public static void Quit()
- {
- throw new QuitException();
- }
在App類的Application_UnhandledException方法中添加代碼,使得它看起來如下:
Code Snippet
- // Code to execute on Unhandled Exceptions
- private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
- {
- if (e.ExceptionObject is QuitException)
- return;
- if (System.Diagnostics.Debugger.IsAttached)
- {
- // An unhandled exception has occurred; break into the debugger
- System.Diagnostics.Debugger.Break();
- }
- }
然後確保App.xmal中具有設定了UnhandledException的處理:
Code Snippet
- UnhandledException="Application_UnhandledException"
好了,最後只需要在你想要退出程式的地方調用”App.Quit()”方法就可以退出程式了。