Button WinRT/UWP在断电时暂停上升?

Button WinRT/UWP在断电时暂停上升?,button,uwp,windows-runtime,action,suspend,Button,Uwp,Windows Runtime,Action,Suspend,我试图在应用程序(WinRT 8.1)关闭/睡眠/最小化(或windows关机/在平板电脑中使用WIN10重新启动)之前使用应用程序挂起事件保存数据 然而,it操作系统在断电/关机WinRT/UWP上不工作:长时间断电按钮保持时是否会出现暂停操作 长时间关机按钮保持时,暂停动作是否上升 长按关机按钮,系统将强制关机。系统无法确保当前用户会话已完成。因此,无法正确调用挂起事件处理程序 发件人: 当前用户会话基于Windows登录。只要当前用户没有注销、关闭或重新启动Windows,当前用户会话就

我试图在应用程序(WinRT 8.1)关闭/睡眠/最小化(或windows关机/在平板电脑中使用WIN10重新启动)之前使用应用程序挂起事件保存数据

然而,it操作系统在断电/关机WinRT/UWP上不工作:长时间断电按钮保持时是否会出现暂停操作

长时间关机按钮保持时,暂停动作是否上升

长按关机按钮,系统将强制关机。系统无法确保当前用户会话已完成。因此,无法正确调用挂起事件处理程序

发件人:

当前用户会话基于Windows登录。只要当前用户没有注销、关闭或重新启动Windows,当前用户会话就会在锁屏身份验证、切换用户等事件中保持

因此,在关闭之前,应用程序仍处于当前用户会话中。关闭电源(关机)时,将调用挂起的<代码>和<代码>

注意,您不能在VisualStudio中的调试模型中测试它。因为当您关闭系统时,VisualStudio将首先退出degbug模型。
Suspended
事件将不会按预期调用。您可以使用以下代码进行验证

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
将一次追加一个。

如果操作系统正常关闭,则将触发
挂起
生命周期事件


不幸的是,长时间按住关机按钮和按下重启按钮并非如此,因为这两种方式都是不正确的关机方式。按住电源按钮关机基本上是突然的“切断电脑电源”,这意味着操作系统无法对此做出响应,所有未保存的数据都将丢失。这种关闭电脑的方法只有在发生了非常糟糕的事情并且一切都冻结时才应该使用。这就是为什么在这种情况下,UWP应用程序没有机会运行挂起事件处理程序。

欢迎使用SO。请查看此处,了解如何改进您的问题(格式、校对、提供代码等):