这取决于你的意思是"崩溃".
如果要处理任何可能导致应用程序失效的未处理异常,可以将事件处理程序附加到AppDomain.UnhandledException事件,然后处理事件处理程序中的任何错误.
此外,在.Net 4.0中,有一个AppDomain.FirstChanceException在发生异常时执行任何catch块之前被调用.
但是,可能会发生真正的崩溃(例如从终结器抛出异常)导致致命的应用程序退出无法轻松处理,但在大多数情况下,AppDomain.UnhandledException事件可能就足够了.
如果您的应用程序崩溃,那么尝试执行清理代码是不安全的,您不知道什么已损坏,并且在您的应用程序实际退出之前,文件可能被锁定等.
所以我建议你把这个清理代码放在应用程序启动时.让你的应用程序在启动之前查找临时文件等,然后再创建它的普通临时文件,如果它找到它们,那么它可以删除它们或尝试修复/重新使用它们.
为此,您可以让应用程序写入它创建的临时文件的日志,并在成功关闭时删除该日志文件.这样,当您在启动时找到日志文件时,您知道上次运行是崩溃,您必须进行清理.
当然,如果允许一次运行应用程序的多个实例,这会变得更复杂,但同样也可以在崩溃时清理.
这取决于你所说的“崩溃”是什么意思。如果您指的是未处理的异常,您可以为 Application.ThreadException 创建一个处理程序。如果崩溃是由托管代码外部引起的,则您无能为力。
| 归档时间: |
|
| 查看次数: |
8443 次 |
| 最近记录: |