首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# AutoSave cleanup;最佳实践?

C# AutoSave cleanup;最佳实践?
EN

Stack Overflow用户
提问于 2009-11-23 21:09:02
回答 1查看 965关注 0票数 0

我有一个表示文档的类(GH_Document)。GH_Document上有一个AutoSave方法,在每个潜在危险的操作之前都会调用该方法。此方法在原始文件旁边创建(或覆盖) AutoSave文件。

GH_Document还包含一个名为DestroyAutoSaveFiles()的方法,该方法可从磁盘中删除由AutoSave函数创建的所有文件。当应用程序关闭时,以及当文档被卸载时,我在文档上调用此方法。然而,我似乎遗漏了一些案例,因为在一些成功的关闭之后,AutoSave文件仍然存在。

这让我开始思考。处理这种情况的最好方法是什么?我是否应该追踪文档可能消失的所有可能方式,并在所有地方添加自动保存清理逻辑?或者我应该在GH_Document.Dispose()中实现IDisposable并执行清理?或者我应该在GH_Document.Finalize()中这样做?

只有当应用程序崩溃时,我才会希望自动保存文件保留在磁盘上。是否保证Dispose和Finalize在崩溃时不会被调用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-23 21:25:06

是否保证在发生崩溃时不会调用

一般来说,没有,尽管这取决于你的应用程序是如何崩溃的。在C#中,它通常是未捕获的异常传播到顶层的结果。在这种情况下,所有finally子句都将在堆栈向上执行,其中包括从using语句调用Dispose。

如果应用程序突然终止(例如,在任务管理器中终止它),则不会调用finally子句,但您不应依赖此行为。

一个简单的解决方案是将您的自动保存文件放在一个具有特殊命名约定的隐藏目录中,并在成功关机时删除该目录中的所有自动保存文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1783047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档