在WinForms app关闭和计算机关闭时运行代码?

时间:2012-03-29 04:30:20

标签: c# winforms shutdown

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

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

我该怎么做?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

挂钩表单的FormClosing事件。无论是为了响应用户关闭它,程序调用Close,Windows关闭等,这都会在表单关闭时触发。

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

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

答案 2 :(得分:0)

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

Closing event Closed Event