当通用Windows商店应用程序关闭时如何执行代码?

4

我正在开发一款Windows 10商店应用程序,但是我似乎找不到/学习如何检查用户是否按下了红色关闭按钮(在右上方)或通过按Alt+F4。基本上我想要的是这样的:

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

该方法被调用的事实表明他们点击了关闭按钮,这不是一个很好的指示吗? - Arian Motamedi
你想要做什么不同的事情?这两个操作对于用户来说应该是相同的。 - Peter Torr - MSFT
你是在为Windows Store或Win32/WPF构建应用程序吗? - Rafael Regh
我建议您将问题标题从“如何检查用户是否按下红色关闭按钮或Alt + F4”更改为更直接的内容,例如“当Win通用应用程序关闭时如何执行代码”。这样可能会吸引更多了解您正在寻找的任务的专业人士! - HDL_CinC_Dragon
2个回答

5

.: 编辑 :.

如果您有一个没有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 "Closing"事件上添加处理程序来保存你的数据。一旦“Closing”完成,“Close”应该正常触发。

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

我在我的一个小应用程序中有类似的东西,其中在MainWindow的构造函数中,我放置了上面的代码段,将“theMainWindowObject”替换为“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事件存在,我想是这样的。 - dude
1
哎呀,我还没有编写过任何通用 Windows 应用程序,所以我不确定它会对事情产生什么影响。你能访问主窗口对象的 "OnClosing()" 方法组吗? - HDL_CinC_Dragon
龙,不,似乎也没有"OnClosing()"方法..我只想在用户手动关闭应用程序时保存数据..猜想我必须在用户输入数据时每次保存数据.. - dude
嗨Dragon,感谢你的时间!但是它没有起作用...没关系,我会用我的方法来保存数据... :D - dude
啊,抱歉。我希望我能够帮到你!希望有更多了解这方面的人会来帮助你!祝你好运! - HDL_CinC_Dragon
显示剩余3条评论

0
如果您想管理应用程序生命周期,请查看此MSDN文章:https://msdn.microsoft.com/en-us/library/windows/apps/mt243287.aspx 通常在Windows应用程序中没有“关闭”事件。当Windows或用户想要关闭它时,您的应用程序将被挂起。使用ApplicationExecutionState(了解更多)枚举,您可以找出是谁(Windows还是用户)关闭了应用程序。
希望这有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接