确保可序列化对象始终使用最新数据-c#

确保可序列化对象始终使用最新数据-c#,c#,serialization,C#,Serialization,我正在写一个在windows背景下一直运行的程序, 数据始终收集并保存在文件中的可序列化对象中 启动程序时,我会获取上次使用时收集并保存在文件中的所有数据(可序列化对象),并将其恢复到程序中 我想确保如果用户关闭程序并再次启动,所有最新数据都可以序列化并保存到文件中,并且没有数据丢失 我曾想过重写这个方法-static void OnProcessExit(objectsender,EventArgs e)并在用户关闭程序时序列化该对象-但这样做不会产生什么问题 您认为实现这一目标的最佳方式是什

我正在写一个在windows背景下一直运行的程序, 数据始终收集并保存在文件中的可序列化对象中

启动程序时,我会获取上次使用时收集并保存在文件中的所有数据(可序列化对象),并将其恢复到程序中

我想确保如果用户关闭程序并再次启动,所有最新数据都可以序列化并保存到文件中,并且没有数据丢失

我曾想过重写这个方法-static void OnProcessExit(objectsender,EventArgs e)并在用户关闭程序时序列化该对象-但这样做不会产生什么问题

您认为实现这一目标的最佳方式是什么?

多谢各位
Yuval

如果您仅依赖于事件(鼠标移动、按键、程序关闭)-这几乎是您所能做的全部。例如,如果电源关闭,你不能保证一切都会正常。你的应用程序被强制关闭-你失去了记忆中的一切


另一方面,您可以偶尔(每隔几秒钟)序列化一次。例如,在单独的线程中,这样您只需要确保文件没有损坏。

为此,我会使用像SQLite这样的轻量级数据库。感谢您的回复,序列化这么多次是一种好的做法吗?就像每一秒左右……如果你做得这么好,那就是。例如,您可以存储某种散列和,并在任何序列化之前计算它,然后与文件中的以前版本进行比较。另一方面,如果模型更改过于频繁,最好的选择是延长序列化之间的时间间隔。这不是完美的解决方案,但用户也不是完美的。