2010-10-22 64 views
11

我正在寫一個Windows Phone 7應用程序。我有「致命的異常」處理代碼,我確信應用程序完全被破壞,並且沒有任何意義。 (我希望我永遠不會到這裏...)。由於除了退出之外,我的應用還可以做其他事情,所以我希望用戶能夠關閉應用。有沒有辦法以編程方式退出我的應用程序? (Windows Phone 7)

但我注意到Windows Phone 7的Silverlight 4 SDK中沒有System.Environment.Exit()。是否有另一種通過編程方式退出應用程序的方法?

+2

possible le複製[Windows Phone 7關閉應用程序](http://stackoverflow.com/questions/3659195/windows-phone-7-close-application) – 2010-10-22 08:12:02

+0

也是這麼想的,但是看起來問題似乎是關於如何在應用程序中處理不可恢復的問題。證書請求建議應該處理異常,並且應用程序留在用戶控制導航的位置。 – 2010-10-26 00:09:31

+0

請閱讀此:http://blog.jerrynixon.com/2011/11/mango-sample-exit-application.html – 2012-02-20 19:40:17

回答

9

應用證書REQT:

5.1.2應用程序終止

的 應用程序必須處理異常 由.NET Framework提出,而不是 終止不料。在 認證過程中,將監控應用程序 的意外情況 終止。 意外終止的應用程序失敗 認證。處理 例外情況時,應用程序必須提供用戶友好的錯誤消息。 您可能會提供與 應用程序的上下文相關的 消息。 應用程序必須 繼續運行並保持響應 到用戶輸入異常處理後爲 。顯示 通用或無用的錯誤消息 的應用程序將無法通過認證。

我建議您提供任何您感覺與用戶相關的信息,然後將設備導航留給用戶管理。

確認已知的解決方案提供「退出」按鈕,目前我沒有看到從WP7應用程序實現「退出」的強制性理由。

該平臺完全能夠管理應用程序的關閉。越多的應用程序不提供退出,更快的用戶將習慣於不考慮應用程序管理,並讓平臺管理它。容易 - - 使用開始,背部等

如果用戶希望從當前應用程序的去做些別的事情很快

用戶將只是導航他們的設備他們只投中開始。

.Exit(),雖然可用於xna,但實際上不再需要。在CTP期間有一個證書要求,遊戲必須提供退出按鈕。現在這消失了。

非遊戲應用程序從來沒有需要實現這一點。

這個話題的討論越多(它在這個區塊的運行真的很好),對我來說指標越多,就不需要編碼出口。

+0

我沒有閱讀過這部分規範,謝謝指出。我猜想要做的事情是明確指出,應用程序無法繼續,並通過點擊「開始」硬件按鈕來通知用戶退出。謝謝 – will 2010-10-25 17:23:18

+0

我在市場上有一個應用程序拋出一個異常退出,它從來沒有被標記爲一個問題。兩個注意事項:1)它明確標記爲ExitException,所以在拋出時,它的意圖很明顯,2)僅在一種情況下使用,當用戶試圖退出應用程序並擊中我們的自定義飛濺時屏幕(這是一個頁面,而不是一個圖像),開始了一個動畫,否則不會讓任何人通過。 – 2011-03-29 08:55:45

+0

我剛剛從應用程序拒絕了應用程序,因爲它通過拋出ExitException異常退出。儘管在這些情況下具體說明應用程序將退出,但在設置屏幕上的一個選項可禁用此行爲,我的測試版測試人員指出退出的評論是可取的且有用的,並且用戶被提供了查看幫助的機會第一次打開應用程序。如果我重新提交,但是還沒有發言,我已經回覆了拒絕接受技術例外的可能性。 – Yort 2012-01-27 00:10:27

3

「較不醜」(並且顯然只有)退出的方式是outlined here。呸。

+0

這絕對有效,但是有點討厭。 ;>感謝指出它。 – will 2010-10-25 17:21:50

0

當您嘗試以編程方式退出WP7應用程序時,需要記住應用程序認證要求。 Peter Torr has a blog post可以幫助你的方法。 Paul Jenkins最近在市場中遇到MahTweets應用程序的問題,他blogged about it here

HTH, indyfromoz

+0

這有幫助,謝謝你的鏈接。 – will 2010-10-25 17:21:08

2

這裏是我如何做到這一點:

void Exit() 
{ 
    while (NavigationService.BackStack.Any()) 
     NavigationService.RemoveBackEntry(); 
    base.OnBackKeyPress(new CancelEventArgs()); 
} 

不幸的是,這並不工作:(

+0

你應該使用'NavigationService.GoBack()'而不是假回退鍵按 – onmyway133 2012-11-09 10:58:05

+0

你試過嗎?錯誤。 – 2012-11-14 18:54:35

+0

嘗試在循環之前移動「NavigationService.GoBack()」,而不是在之後。 – 2013-03-08 11:10:56

4

對於Windows Phone 8的,只需調用 App.Current.Terminate();

0

我想你可以讓你的應用程序拋出一個未處理的異常,在這一點上,Windows Phone將自動終止你的應用程序

至於認證要求,你可以要求例外。這種方法一直爲我工作。

3

瀏覽到您的解決方案資源管理器App.xaml.cs和 添加靜態方法將App

public static void Exit() 
{ 
     App.Current.Terminate(); 
} 

,這樣就可以從你的應用程序的任何地方調用它,如下

App.Exit(); 
0
App.Current.Terminate(); 

對於Windows Phone 8.1 Silverlight應用程序

相關問題