我希望我的C#WinForms应用程序在应用程序关闭或计算机关闭时运行一些代码(通过startmenu,我知道如果他们拔掉插头就不会工作:P)。
基本上我有一些日志文件需要应用程序在关机时上传到FTP服务器。
我该怎么做?
答案 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事件触发。