[Windows Phone 開發] 想在 OnBackkeyPress 時彈出 MessageBox,但 App 無預警被關閉

摘要:[Windows Phone 開發] 想在 OnBackkeyPress 時彈出 MessageBox,但 App 無預警被關閉

目前常見的 App 設計樣式,當按 Back 鍵,即將離開 App 前,會跳出 MessageBox 提示使用者是否要離開此 App。


protected override void OnBackKeyPress(CancelEventArgs e)
{
    e.Cancel = true;
    MessageBoxResult result = Message.Show("title", "確定關閉本 App?", MessageBoxButton.OKCancel);
    if (result  == MessageBoxResult.OK)
    {
        App.Current.Terminate();
    }
}

但是實際執行時,當 MessageBox 彈出之後約莫 10 秒,在不做任何動作的情況下,App 會自動關閉。

根據微軟官方文件的敘述,若想要實作按下 Back 鍵彈出 MessageBox 視窗,須遵守一個重要的規則,就是必須在不同 thread 中呼叫 MessageBox.Show()。根據此敘述將程式改寫如下,則 App 將不會自動關閉。


protected override void OnBackKeyPress(CancelEventArgs e)
{
    e.Cancel = true;
    Dispatcher.BeginInvoke(() =>
    {
        MessageBoxResult result = Message.Show("title", "確定關閉本 App?", MessageBoxButton.OKCancel);
        if (result  == MessageBoxResult.OK)
        {
            App.Current.Terminate();
        }
    }
}

 

參考資料: http://msdn.microsoft.com/en-us/library/windows/apps/ms598674(v=vs.105).aspx