在WinForms应用程序关闭和计算机关闭时运行代码

本文关键字:运行 代码 计算机 WinForms 应用程序 | 更新日期: 2023-09-27 18:29:33

我希望我的C#WinForms应用程序在应用程序关闭或计算机关闭时运行一些代码(通过启动菜单,我知道如果他们拔掉插头,它就不会工作:p)。

基本上,我有一些日志文件,我需要应用程序在关闭时上传到FTP服务器。

我该怎么做?

在WinForms应用程序关闭和计算机关闭时运行代码

您可以通过拦截FormClosing事件来检测应用程序是否关闭。

您可以使用SystemEvents检测寡妇关闭、注销、挂起等。我建议不要使用系统事件,因为您可能没有足够的时间执行到远程服务器的上传(我认为默认值是3秒)。

挂起表单的FormClosing事件。这将在表单关闭时触发,无论是响应用户关闭表单、程序调用关闭、Windows关闭等。

如果你需要知道你正在处理哪种退出,FormClosingEventArgs有一个CloseReason属性(类型为CloseReason),它会告诉你关闭窗口的原因;它包括UserClosing和WindowsShutDown等值。

不过,在Windows关闭时,您可能无法上传到FTP服务器。在Windows Vista和7中,在Windows保留强制终止应用程序的权利之前,应用程序只有2秒钟的时间关闭。您最好将日志保存在本地,并在下次应用程序启动时上传。

我认为你应该专注于在关闭应用程序时进行上传,而不是关闭计算机,因为当计算机关闭时,它将没有足够的资源&是时候做你的工作了(上传和其他)。当调用应用程序关闭时,使用应用程序的Form_Closed事件来执行工作,或者当应用程序即将关闭时,可以使用Form_Clossed事件来激发。

关闭事件关闭事件