我试图使用app挂起事件在应用程序(WinRT 8.1)关闭/睡眠/最小化(或WIN10平板电脑中的windows关机/重新启动)之前保存数据。
https://learn.microsoft.com/en-us/windows/uwp/launch-resume/suspend-an-app
然而,它不工作在断电/关闭WinRT/UWP:暂停行动上升的长期断电按钮保持吗?
发布于 2018-04-19 07:11:16
在长时间关闭按钮的情况下,暂停动作是否上升?
系统将被迫关闭与长按电源关闭按钮。系统无法确定Current user session是否完成。因此,无法正确调用挂起事件处理程序。
来自Windows 10通用Windows平台(UWP)应用生命周期
当前用户会话基于Windows登录。只要当前用户没有注销、关闭或重新启动Windows,当前用户会话就会在锁屏幕身份验证、开关用户等事件中持续存在。
因此,在关闭之前,应用程序仍在Current user session中。而Suspended将在断电(关闭)时被调用。
注意,您不能在中的调试模型中测试它。因为当您关闭系统时,Visual首先将退出脱胶错误模型。Suspended事件不会像expect那样被调用。您可以使用以下代码进行验证。
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var stringBulider = new StringBuilder();
var deferral = e.SuspendingOperation.GetDeferral();
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
Object value = localSettings.Values["exampleSetting"];
stringBulider.Append(value.ToString() + "/Next");
localSettings.Values["exampleSetting"] = stringBulider.ToString();
deferral.Complete();
}每次关闭时,stringBulider都会被一次追加一个。
发布于 2018-04-19 13:34:31
Suspending生命周期事件将在正常操作系统关闭的情况下触发--如果您执行Start -> Shut down操作。
不幸的是,长时间关闭按钮并按下重新启动按钮的情况并非如此,因为这两种方式都是关闭的不当方式。按住电源按钮关闭本质上是突然“切断电源”到PC,这意味着操作系统不能对此作出反应,所有未保存的数据都丢失了。这种关闭个人电脑的方法应该只在真正糟糕的事情发生并且一切都冻结时才能使用。这就是为什么在这种情况下,UWP应用程序没有机会运行挂起事件处理程序。
https://stackoverflow.com/questions/49896731
复制相似问题