博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wp8 在OnBackKeyPress事件中调用MessageBox.Show()崩溃
阅读量:5909 次
发布时间:2019-06-19

本文共 1219 字,大约阅读时间需要 4 分钟。

今天写代码的时候遇到一个问题,在wp8中执行下面的代码后,弹出对话框后,停滞一段时间程序退出。

protected override void OnBackKeyPress(CancelEventArgs e) {    try{        MessageBoxResult result = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButton.OKCancel);        if (result == MessageBoxResult.OK) {            base.OnBackKeyPress(e);        } else {            e.Cancel = true;        }     } catch (Exception ex) {        e.Cancel = true;    }}

感觉很奇怪,以前wp7就这么写的一直没有问题啊......

于是各种找原因,最后看到了后,才知道wp8中对此处做了修改。

MessageBox.Show(String) 和MessageBox.Show(String, String, MessageBoxButton)在 Windows Phone 8 中,如果您调用 Show 中的 OnBackKeyPress(CancelEventArgs) 或 BackKeyPress 事件的处理程序,应用将退出。您可以通过在不同的线程上调用Show 来解决此问题,如以下步骤所述。1.重写 BackKeyPress 或为BackKeyPress 事件创建处理程序。2.将 Cancel 设置为 true 以取消后退键按键操作3.调度一种方法,显示MessageBox。4.如果用户选择退出应用,请调用 Terminate(),否则不要执行任何操作。

这样我就对上面的代码进行了修改,代码如下,运行后不再出现停滞一段时间崩溃的现象

protected override void OnBackKeyPress(CancelEventArgs e) {    e.Cancel = true;    this.Dispatcher.BeginInvoke(() => {         MessageBoxResult result = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButton.OKCancel);        if (result == MessageBoxResult.OK) {            Application.Current.Terminate();        }    });}

 参考文章:

 

 

 

 

转载于:https://www.cnblogs.com/qq278360339/p/3216877.html

你可能感兴趣的文章
simpledateformat格式中年月日为什么大小写不同
查看>>
Heron —— 核心组件学习
查看>>
Java:String和Date、Timestamp之间的转换
查看>>
Linux运维之网络运维
查看>>
nginx 负载均衡配置
查看>>
pjsip for iOS
查看>>
mysql主从同步设置
查看>>
[置顶] jQuery:用方向键控制层的移动
查看>>
spring 国际化
查看>>
注册一年
查看>>
nginx实现网关解决跨域问题(大型网关接口系统)
查看>>
XenDesktop4系统管理教程
查看>>
black berry上向RecordStore中的增删改查
查看>>
window.showModelessDialog 兼容性,及easyUI 模态框
查看>>
优秀程序员的十个习惯
查看>>
院内感染介绍
查看>>
jQuery中ready与load事件
查看>>
OAuth2FeignRequestInterceptor不支持服务注册和发现?
查看>>
在xp,win7下禁止安装软件
查看>>
HTML5实现的Loading缓冲效果
查看>>