【发布时间】:2011-04-13 01:53:48
【问题描述】:
我即将用 C# 开发一个 Windows 服务。该服务需要跟踪系统中的事件,并不时将一些数据写入文件。这些正在进行的事件形成了某种状态,因此我会将状态保存在内存中,并在事件到达时对其进行更新。我不想让事情变得过于复杂,所以我不希望状态在磁盘上持久存在,但我想知道我是否可以以某种方式使其在内存中持久存在,这样如果服务崩溃(并且自动重启Windows)它可以从它离开的地方继续前进(可能会丢失一些事件,没什么大不了的)。
我正在考虑创建一个“共享”内存区域,从而让 Windows 管理它,并仅在服务中使用它 - 但我不确定该对象在服务终止后是否会持续存在。
有什么想法吗?
编辑:我不是在寻找一个矫枉过正的解决方案。数据有点重要,所以我想让它在内存中等待,直到服务重新启动,但数据并不是太重要。如果我可以轻松地保存数据,而无需处理文件、外部 3rd 方进程等,这将是一个不错的功能。我理想的解决方案是一个简单的内置功能(在 .NET 或 Windows 中),它将为我提供一些内存持久性,以便从崩溃事件中恢复。
【问题讨论】:
标签: c# .net windows persistence shared-memory