应用关闭事件

ApplicationClose event

我正在用 C#/XAML 开发 Windows 10 个通用应用程序。

我想实施这样的政策,每当用户关闭我的应用程序(并且满足其他一些条件,但在这里无关紧要)时,就会显示一个广告。

我的问题是如何在应用程序关闭时拦截和 cancel/handle 事件?当用户决定关闭应用程序时,这很容易,例如按下我将在 XAML 中定义的按钮,但如果他按下 Alt+F4 会怎样?在 Winforms 中这也很简单:

    private void Form1_Load(object sender, EventArgs e)
    {
        this.FormClosing += Form1_FormClosing;
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        e.Cancel = true;
    }

但是如何在Windows 10 通用应用程序中实现类似的效果?

恐怕没有取消关闭甚至延迟关闭应用程序的选项。 Suspending 事件是您的应用程序在终止(如果发生)之前收到的唯一指示。查看 Application.Suspending 事件:https://msdn.microsoft.com/en-us/library/windows.ui.xaml.application.suspending.aspx

不,你无法在Windows 10 Universal App(和Windows 8.1 Store App)中实现类似的效果,因为在现代应用中,用户拥有应用的完全控制权并且应用无法阻止用户关闭应用。

如果您在用户关闭应用程序时需要处理某些事情,如 Lukkha 所述,您可以在 Application.Suspending 中处理它们,但默认情况下有时间限制,所有事情都应在5 秒。如果要超过5s,需要请求ExtendedExecutionSession。

Using Extended Execution in Windows 10 Universal Apps