我希望在使用Windows TaskManager终止我的WinFormsApplication时执行一些代码(清理resoucrse)。我该怎么做?我正在使用TaskManager的Process选项卡终止我的应用程序。
答案 0 :(得分:4)
将主表单中的ApplicationExit事件连接起来并在那里进行清理。
修改强> 如果您通过任务管理器关闭应用程序,则无法捕获任何事件。这些事件期待正常的终止过程。
答案 1 :(得分:4)
如果您的应用程序被强制关闭,我不确定是否有可靠的方法来确保您清理资源。我假设您的资源是非标准资源,而不是Windows管理的资源。
有两种可能性。第一种是安装一个监视应用程序的Windows服务应用程序,并确保在应用程序被终止时清理其资源。这需要一些进程间通信和相当多的编码。
第二是确保应用程序启动时资源清洁。运行时检查您的资源是否在那里,并在继续执行之前将其清理干净。
答案 2 :(得分:2)
在主应用程序窗口中处理此事件:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
if(e.CloseReason == CloseReason.TaskManagerClosing) {
// clean up code
}
}
答案 3 :(得分:1)
我不确定,我没有尝试过。但我猜测应该可以通过捕获一些Win32事件来实现。尝试WM_CLOSE,CTRL_CLOSE_EVENT
答案 4 :(得分:0)
根据其描述,CriticalFinalizerObject可能会对您有所帮助:
...公共语言运行时(CLR) 保证所有关键 终结代码将给出 执行的机会,提供 终结者遵循CER的规则, 即使在CLR的情况下 强行卸载应用程序域 或中止线程