2011-03-09 82 views
3

我的程序需要佔用一些資源。 我希望它在退出之前釋放這些資源。當正常退出時很容易實現。 但是,如果用戶在Windows中打開任務管理器並殺死了可解析的內容呢?在這種情況下,我的析構函數不會受到影響。如何在進程死於Windows之前做些事情

有沒有人知道一個好伴侶來解決這個問題? (C#)

非常感謝,

回答

4

你不能處理的情況,如果用戶殺死應用有力。但是你不必擔心資源。 Windows將在處理過程中自動釋放您的進程獲取的資源。

2

當這個過程被殺死的時候,地毯從你身下被抽出。但是這個過程的資源會隨着過程而被殺死,所以你不需要清理它們。確保然而,文件一致性是一個非常複雜的故事(類似於插件被拔出)。

0

似乎不可能對被殺死的過程作出反應。這樣做的方法是使用信號,但正如文檔所述(here),SIGTERM信號不會在Windows NT下生成。

如果您的程序是控制檯應用程序並且您想對ctrl + c做出反應,您可以嘗試PInkoke signal函數並捕獲SIGINT。

與其他人一樣,Windows將爲您騰出資源,唯一危險的是您打開的文件將處於未知狀態,因此可能不值得您付出努力。

相關問題