2011-03-09 41 views
3

我的程序需要占用一些资源。 我希望它在退出之前释放这些资源。当正常退出时很容易实现。 但是,如果用户在Windows中打开任务管理器并杀死了可解析的内容呢?在这种情况下,我的析构函数不会受到影响。如何在进程死于Windows之前做些事情

有没有人知道一个好伴侣来解决这个问题? (C#)

非常感谢,

回答

4

你不能处理的情况,如果用户杀死应用有力。但是你不必担心资源。 Windows将在处理过程中自动释放您的进程获取的资源。

2

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

0

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

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

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

相关问题