我正在编写一个应用程序,其目的涉及大量不同事件的记录。在那些我还希望有一个事件,应用程序被关闭 - 即使出乎意料地因为断电。
当然,当电力耗尽时,我没有机会在任何地方写任何东西。所以我的想法是在某个已知位置(例如,每分钟一次)连续写入时间戳,并且当下次运行应用程序时,它可以确定意外关闭的大致时间。我可以接受1分钟的精度。
但是我担心在操作系统和磁盘级别进行缓存可能会干扰这种方法。有没有更好的方法或者如果没有 - 如何确保我刚写的数据真的写到物理媒体上?
补充:哦,几乎忘记了流行语专线:Windows XP及以上版本; .NET 3.5; C#。
答案 0 :(得分:2)
系统事件日志中记录了意外关闭。
当您的应用程序干净地关闭时,请将其写入日志文件。下次启动应用程序时,检查应用程序是否按预期方式关闭,否则请检查系统事件日志。
答案 1 :(得分:1)
编辑:删除了错误的答案(由于没有正确阅读问题)
你可以使用FlushFileBuffers方法,但仍然只能将它写入设备,你仍然无法得到实际的驱动器来写它(据我所知)。
http://www.pinvoke.net/default.aspx/kernel32/FlushFileBuffers.html?diff=y