程序崩溃后运行清理

时间:2011-09-18 15:13:02

标签: c# winforms

我目前正在编写一个非常简单的应用程序,但它会对操作系统进行更改,并在程序关闭时进行更改。

担心当然是程序崩溃了。我可以尽我所能防止它崩溃,或者处理事情,如果它崩溃了 - 但是我不能阻止某人强行关闭这个过程(除非我可以吗?)

有没有办法捕获该事件并在进程退出之前运行一个非常快速的清理?

4 个答案:

答案 0 :(得分:2)

我不认为如果您的进程被杀死,您可以做任何事情 - 一种方法是让您的应用程序生成一个帮助程序进程,就像这种情况一样。当您的应用程序终止时,该进程可以检测到该操作并在关闭自身之前根据需要“修复”操作系统设置 - 显然这只有在其他进程不会被杀死时才会起作用。

答案 1 :(得分:1)

你可以挂钩UnhandledException。您无法停止应用程序终止,但您可以记录或进行一些清理。这允许您处理应用程序崩溃的情况。

某人实际上只是在杀死这个过程的条款,你无能为力。

答案 2 :(得分:0)

防守计划。

将原始设置写入文件。关闭时删除文件。启动时,检查文件是否存在 - 如果是,则您的进程被终止,并且您知道要将设置返回的内容。

编程201 - 事务的基础知识,应用于系统设置,程序运行时作为事务边界。

答案 3 :(得分:0)

如果您不介意与C或C ++代码进行一些互操作,并且如果您在Windows Vista或更高版本上运行,则可以使用Application Recovery和Restart API。这些API告诉Windows在发生灾难性事件时拦截您的进程,以便您可以在Windows完全终止进程之前调用一些清理代码。

请参阅http://msdn.microsoft.com/en-us/library/cc948909.aspx