我正在编写UAP C#/ XAML应用程序,暂时我对用户在桌面环境中运行我的应用程序感兴趣(当keyobard和鼠标可用时,机器正在运行一些版本的Windows 10而不是Windows 10 Mobile)。
我想拦截ALT + F4以便在用户退出之前询问一些重要问题,例如记事本 - 当您有未保存的文件时,记事本会通知您有关此事实并询问您是否要保存工作,退出而不保存或返回使用您的文件。
在Windows 10 UAP中是否可以实现此类行为?我尝试使用Application.Suspending事件和ExtendedExecutionSession,但似乎在此事件被触发之前,GUI线程已经死亡,而我在此事件处理程序中所能做的就是不需要用户交互的操作。
答案 0 :(得分:2)
没有办法拦截和停止这样的事件。
当您的应用被告知在关闭事件后暂停(alt + f4,交叉点击)时,您有10秒钟(在桌面上)清除并保存状态,然后才能完全终止。
使用通用应用程序,您不应该需要一个对话框,要求他们保存或不保存,只需保存状态,以便下次重新打开时刷新视图以前的状态,或者,想一下邮件客户端,保存他们的打字作为草案。但是,对微软的指导是,如果用户关闭了您的应用,假设他们希望您离开,那么就不会恢复状态。
你可以做一些额外处理的唯一办法就是要求操作系统进行扩展执行,尽管这并不能得到保证,即使授予可以通过1s终止通知也可以撤销。重要的是要注意,即使授予了扩展执行权,也不允许任何UI使用您的应用程序。
有关Windows 10通用应用程序生命周期的更多信息,我建议您观看Microsoft Virtual Academy上的Application Lifecycle会话。