窗体关闭关闭事件不写入文件



我的电脑有一个备用电源,它与它和墙内联。当我从墙上拔下电源线时,我有 2-5 分钟的时间,备用电源会关闭计算机。正是在这段时间里,我想使用以下代码将数据写入文件:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason.Equals(CloseReason.WindowsShutDown))
    {
        writeContents("Interrupted");
        sendMessage("PWR - The Spring Test Machine has stopped");                
        return;
    }
    if (e.CloseReason.Equals(CloseReason.UserClosing)) 
    {
        if (MessageBox.Show("You are closing this application.nnAre you sure you wish to exit ?", "Warning: Not Submitted", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop) == DialogResult.Yes)
        {
            writeContents("Interrupted");
            return;
        }
        else
            e.Cancel = true; 
    } 
}

问题是它没有用。我不认为闭幕活动曾经被召唤过。任何想法将不胜感激。谢谢。

从这里 http://www.daniweb.com/software-development/csharp/threads/253249/application-exit-does-not-trigger-the-formclosing

当您使用任务管理器"杀死"应用程序时,它不会触发任何 事件,它只是停止执行,这就是您关闭 已冻结的应用程序。如果您等待它处理任何 事件,那么它仍然会被冻结。

至于当您重新启动计算机或关机时,事件将是 只有在有足够的时间时才调用,他们系统告诉所有 它正在关闭的应用程序,只给了他们很短的 是时候在它杀死他们之前处理业务了。Windows 7 将显示 对话框告诉您哪些应用程序仍在繁忙,并询问您是否 你想杀死它们并关闭或取消。但至于XP,它只是 在 X 秒后杀死它们。

这几乎就是我想象的FormClosesing的行为......Application.ApplicationExit Event 是否是更好的侦听事件?

下面是有关 FormClosing 事件属性的一些有用信息:

FormClosesingEventArgs.CloseReason中的错误?

您可以尝试使用 switch 语句,如下所示:检测表单关闭的原因

不确定它是否有效,我需要先检查它,我现在不在机器前面.. 但是您是否也尝试过 CloseReason 枚举的其他元素?尝试 任务管理器关闭 。无论如何,首先尝试抛出一条消息( messagebox ( 看看你是否真的有你想要的正确 CloseReason,如果你不希望电脑每次检查它时都关闭,也不要忘记使用 e.Cancel = true 。之后,检查您用于写入文件的方法是否正常。

也许这也会有所帮助关闭应用时提示用户保存

相关内容

  • 没有找到相关文章

最新更新