如何正确处理OnBackKeyPress?

时间:2012-11-30 06:50:04

标签: windows-phone-7

为简单起见,我创建了一个新的应用程序,其中包含MainPage和Page2。 MainPage有一个按钮,导航到Page2。还覆盖MainPage.OnBackKeyPress:

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        if (MessageBox.Show("Quit?", "Confirm", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
            e.Cancel = true;
        else
            base.OnBackKeyPress(e);
    }

Page2为空,除了覆盖OnNavigateFrom,以模拟从Page2返回MainPage时的长时间操作:

    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        System.Threading.Thread.Sleep(1000);
        base.OnNavigatedFrom(e);
    }

一切都还可以,但是当我在Page2,并快速按下Back键3-4次 时,我会看到消息框弹出两次。 我希望消息框不显示,或者至少显示和隐藏。我的代码有什么问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

这很快取决于你的意思......

代码看起来没问题(除了Thread.Sleep,这可能是为了模拟UI线程上的长操作。)

我希望这是因为当UI线程忙(或“休眠”)时,后退键仍在注册并被发送到应用程序,当UI线程再次可用时,它将一个接一个地处理它们

这是为什么你应该避免阻止UI线程的一个很好的例子。

相关问题