我是 C# 编程的新手,所以请记住:
我有一个内存数据对象,其中包含当(如果)我的应用程序崩溃或关闭时我需要保存信息的数据。有没有办法确定性或可靠地做到这一点?
我一直在看析构函数
~MyObjectName(){}
终结器和 Dispose(),
但据我所知,这些都不能可靠地满足我的要求?
目前我正在使用析构函数,它在我关闭程序时起作用,但这并不意味着它会在崩溃时起作用,或者总是起作用。
我是否也应该查看事件?
最佳答案
没有 100% 可靠的机制可用于在进程(任何进程,而不仅仅是 .Net 进程)终止时保存数据(或做任何其他事情)——大多数使用任务管理器中的“结束进程”选项可以随时终止进程,当发生这种情况时,进程会立即被终止。举一个更极端的例子,电源线可以从机器背面拉出。
如果这个数据对象不是 100% 必须是最新的并在进程被终止后保存,那么 AppDomain.UnhandledException Event可能就足够了。
如果这种情况绝对 100% 必要,那么您需要在流程运行时不断保存此信息 - 绝对不能保证您以后有机会这样做。这就是数据库的运作方式,在某些更改记录以某种格式(例如事务日志)记录到磁盘之前,没有事务返回。这就是 D 在 ACID 中的含义.
关于c# - 如何确保在崩溃时保存应用程序状态 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9327416/