【问题标题】:How to execute code when Universal Windows Store App is closing?通用 Windows 应用商店应用程序关闭时如何执行代码?
【发布时间】:2015-12-18 18:12:09
【问题描述】:

我正在为 Windows 10 应用商店应用开发应用,但我似乎无法找到/了解如何检查用户是否按下了红色关闭按钮(位于右上角)或按下 Alt + F4。基本上我想要的是这样的:

private void app_Close(object sender, CloseEventArgs e)
{
     //saves some data in the app :D
}

【问题讨论】:

  • 方法被调用的事实很好地表明他们已经点击了关闭按钮,不是吗?
  • 你想做什么不同的事情?这两个操作对于用户来说应该是相同的。
  • 您是在为 Windows 应用商店或 Win32/WPF 构建应用程序吗?
  • 我建议您将问题标题从“如何检查用户是否按下红色关闭按钮或 Alt+F4”更改为更直接的内容,如“Win Universal 时如何执行代码应用程序正在关闭”。这可能会在您正在寻找的任务中聚集更多知识渊博的人!

标签: c# xaml windows-10 win-universal-app


【解决方案1】:

.: 编辑:.

如果您有一个没有 MainWindow 对象的通用应用程序,您可能希望利用“暂停”事件:

appObject.Suspending += (s, a) =>
        {
            SaveTheData(); // I really like my data and want it for later too
        };

public App()
    {
    /*
        stuff
     */
    Suspending += (s, a) =>
        {
            SaveTheData(); // I really like my data and want it for later too
        };
    }

.: 原文:.

为您的 MainWindow“关闭”事件添加一个处理程序以保存您的数据。一旦“关闭”完成,“关闭”应该会正常触发。

theMainWindowObject.Closing += (s,a) =>
    {
        SaveTheData(); // It's precious!
    };

在我的一个较小的应用程序中,我有类似的东西,在 MainWindow 的构造函数中,我将上面的 sn-p 替换为“this”,以便它引用自己

所以我有:

public MainWindow()
    {
    // Note: "this." isn't necessary here but it helps me with mental accounting
    this.Closing += (s, a) =>
        {
            Save();
        };
    }

如果您只是保存一两个属性并且没有任何疯狂的逻辑,您可以将其直接放入处理程序中:

public MainWindow()
    {
    Closing += (s, a) =>
        {
            Properties.Settings.Default.SettingsPopupX = mySettingsPopupObject.GetX();
            Properties.Settings.Default.SettingsPopupY = mySettingsPopupObject.GetY();
            Properties.Settings.Default.Save();
        };
    }

【讨论】:

  • 嗨,Dragon,感谢您抽出宝贵时间,但我正在开发通用 Windows 应用商店应用程序,我猜 Closing 事件似乎不存在..
  • 哦,我还没有编写任何通用 Windows 应用商店应用程序,所以我不确定这会如何影响事情。您是否可以为主窗口对象访问“OnClosing()”方法组?
  • Dragon,不,似乎也没有“OnClosing()”方法。我只想在用户手动关闭应用程序时保存数据。我猜我每次都必须保存数据用户输入数据..
  • 已编辑!阅读底部部分,希望对您有所帮助!
  • 嗨,龙,感谢您的宝贵时间!但它不起作用..没关系,我会用我的方式保存数据..:D
【解决方案2】:

如果您想管理您的应用程序生命周期,请查看这篇 MSDN 文章:https://msdn.microsoft.com/en-us/library/windows/apps/mt243287.aspx 通常,您在 Windows 应用程序中没有“关闭”事件。当 Windows 或您的用户想要关闭您的应用程序时,您的应用程序将被暂停。使用ApplicationExecutionState(see more) 枚举,您可以找出谁(Windows 或您的用户)关闭了该应用程序。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多