Windows-8 – 未调用Metro / WinRT UI异步void事件处理程序的未
请考虑以下内容,从
Windows 8 Metro / WinRT应用程序中提取,这些应用程序已经减少到显示异常所需的最低限度:
public class App : Application { public App() { UnhandledException += (sender,e) => e.Handled = true; } } public class MainPage : Page { private void Button_Click_1(object sender,RoutedEventArgs e) { throw new NotSupportedException(); } private async void Button_Click_2(object sender,RoutedEventArgs e) { throw new NotSupportedException(); } } 所以给出一个带有两个按钮和他们的点击事件处理程序的Metro UI,唯一的区别是第二个事件处理程序被标记为异步. 然后单击每个按钮,我会期望在这两种情况下调用UnhandledException处理程序,因为它们(应该)都通过UI线程和关联的同步上下文输入. 但是UnhandledException处理程序在异步情况下不被调用,所以应用程序崩溃!由于这是挑战我认为其他非常直观的模式,我需要知道为什么!是的,我知道我可以在try {} catch {}中包装处理程序的正文,但是我的问题是为什么不支持UnhandledException处理程序? 为了进一步强调为什么没有意义,请考虑WPF应用程序的以下实际相同的提取,也使用异步/等待和目标.NET Framework 4.5: public class App : Application { public App() { DispatcherUnhandledException += (sender,e) => e.Handled = true; } } public class MainWindow : Window { private void Button_Click_1(object sender,RoutedEventArgs e) { throw new NotSupportedException(); } } [有一个微妙的区别,WPF有一个Application DispatcherUnhandledException事件处理程序以及一个AppDomain UnhandledException事件处理程序,但是您只能在DispatcherUnhandledException中将异常标记为“已处理”,它们与Metro / WinRT Application UnhandledException事件处理程序对齐以上.] 然后单击每个按钮,DispatcherUnhandledException处理程序确实在这两种情况下按预期方式调用,并且应用程序不会崩溃.
这里回答:
No UnhandledException fired from async event callback
这是WinRT的已知限制.我们希望,它被固定在下次更新. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在windows dos shell下使用参数执行Perl脚本的正确命令行是
- windows-server-2008-r2 – 用户登录脚本何时运行?
- .NET for Universal Windows Program是.NET Core的一个子集
- Mono / XSP上的Microsoft.Owin.Host.SystemWeb
- windows-server-2008 – RemoteApp:以用户x身份登录,断开用
- windows-update – 仅在用户注销时通过SCCM部署更新
- win10生成UWP软件打包 安装UWP软件
- 如何查看windows update更新代理版本
- 具有类似rc的文件的PowerShell配置
- windows-server-2003 – 如何读取终端服务管理器空闲时间
- 我如何从powershell完全关闭windows defender
- windows-server-2008 – Subversion Edge LDAP(需
- 在Windows上嵌入Python:为什么它必须是DLL?
- windows-server-2008 – 我可以向客户端发送预先
- windows-server-2008 – 重新启动MS Server 2008
- windows – 培训高中学生的安全 – 我可以安装哪
- 强制Xamarin在Windows上使用Mono
- windows-7 – 使用GlusterFS和Windows避免SPOFS
- windows-update – 如何防止wuauserv(Windows Up
- 在Windows上运行更漂亮