【发布时间】:2018-10-11 13:44:02
【问题描述】:
我有一个单窗口WPF应用程序(Win8.1 / .net4.7),Window.Closing-Event未处理,Window.Closed-Event处理如下:
private void Window_Closed(object sender, EventArgs e)
{
Properties.Settings.Default.WinMainLocationX = this.Left; // ok
Properties.Settings.Default.WinMainLocationY = this.Top; // ok
Properties.Settings.Default.WinMain_size = new Size(this.Width, this.Height); // crucial setting
Properties.Settings.Default.WinMain_state = this.WindowState; // ok
Properties.Settings.Default.Save();
}
我每天通过一个包含C:\WINDOWS\system32\shutdown.exe /s /t 20 的批处理文件关闭应用程序(此时始终处于空闲状态),之后什么也没有。这样电脑就可以正常关机了。 shutdown.exe的参数可以通过shutdown /?的命令行输入看到。
问题:每隔 7 或 8 天,窗口大小就会损坏,应用程序(在早上启动后)如下所示:
如何保护我的应用程序设置免受shutdown.exe 的干扰?
【问题讨论】:
-
从设置中定位窗口的代码在哪里?
-
您可以尝试将代码移动到Application.Exit 事件的事件处理程序。它应该在应用程序关闭或 Windows 会话结束时触发。但不能保证您的数据在会话终止之前始终正确保存。
-
这台机器需要更好的反恶意软件产品或不应该自动关闭。您可以在 .bat 文件中使用 taskkill.exe,这样产品就有足够的时间来完成 XML 扫描。
-
@mm8:感谢您的建议,我没有检查它,因为在此期间一个班轮已经解决了这个问题。
标签: c# wpf batch-file shutdown application-settings