如何在进程在Windows中被杀死之前做一些事情

时间:2011-03-09 21:55:22

标签: c# windows process

我的程序需要占用一些资源。 我希望它在退出之前释放这些资源。通常可以在可切换的退出时轻松实现。 但是,如果用户在Windows中打开任务管理器并杀死可删除的内容怎么办?在这种情况下,我的析构函数不会被击中。

有人知道解决这个问题的好人吗? (C#)

非常感谢,

3 个答案:

答案 0 :(得分:4)

如果用户强行终止应用程序,则无法处理该方案。但是你不必担心资源问题。 Windows将自动释放您的进程在被杀死时获取的资源。

答案 1 :(得分:2)

当这个过程被杀死时,地毯会从你身下被拉出来。但是进程的资源将随进程一起被杀死,因此您无需清理它们。确保例如但是,文件的一致性是一个非常复杂的故事(类似于插头被拔出的情况)。

答案 2 :(得分:0)

似乎无法对被杀的过程做出反应。这样做的方法是使用信号,但正如文档所说(here),SIGTERM信号不是在Windows NT下生成的。

如果您的程序是控制台应用程序并且您想对ctrl + c作出反应,您可以尝试PInkoke signal函数并捕获SIGINT。

正如其他人所说,Windows将为您释放资源,唯一危险的是您的打开文件将处于未知状态,因此可能不值得努力。