如何在进程死于Windows之前做些事情

我的程序需要占用一些资源。 我希望它在退出之前释放这些资源。 正常退出时很容易实现。 但是,如果用户在Windows中打开任务pipe理器,并杀死可以改变的东西呢? 在这种情况下,我的析构函数不会被击中。

有没有人知道要解决这个问题很好? (C#)

非常感谢,

Solutions Collecting From Web of "如何在进程死于Windows之前做些事情"

如果用户强行终止应用程序,则无法处理场景。 但是你不必担心资源。 Windows将自动释放您的进程获取的资源。

当这个过程被打死的时候,地毯从你身下被抽出。 但是这个过程的资源会随着进程而被杀死,所以你不需要清理它们。 然而,确保文件的一致性是一个非常复杂的故事(类似于插件被拔出)。

对被杀的进程作出反应似乎是不可能的。 要做到这一点的方法是使用信号,但正如文档所述( 这里 ),SIGTERM信号不是在Windows NT下生成的。

你可以尝试PInkoke的signal功能,并捕获SIGINT如果你的程序是一个控制台应用程序,你想对CTRL + C作出反应。

像其他人说的那样,Windows将为您腾出资源,唯一危险的是您打开的文件将处于未知状态,因此可能不值得。