Я пишу приложение, цель которого заключается в большом количестве регистрации различных событий. Среди них я также хотел бы, чтобы событие было закрыто - даже если это было неожиданно, из-за потери мощности.Как отслеживать, когда приложение неожиданно отключилось?
Естественно, когда мощность отключается, я ничего не могу написать нигде. Поэтому моя идея заключалась в том, чтобы постоянно писать временную метку в каком-то известном месте (скажем, один раз в минуту), а когда приложение было в следующем запуске, оно могло определить приблизительное время неожиданного отключения. Для меня приемлема точность 1 минута.
Однако я обеспокоен тем, что кэширование на уровне ОС и на диске может помешать этому подходу. Есть ли лучший способ или если нет - как убедиться, что данные, которые я только что написал, ДЕЙСТВИТЕЛЬНО выписаны на физический носитель?
Добавлено: О, почти забыл линию модного слова: Windows XP и выше; .NET 3.5; C#.
Нет, это только очищает внутренний буфер FileStrem, а не кэш операционной системы. –
Если вы беспокоились о миллисекундах или секундах, я мог понять, почему вы будете беспокоиться об этом, но я никогда не испытывал, что OS/Disk будет хранить крошечные вещи в кеше в течение нескольких минут, не записывая их. Это может произойти в исключительных обстоятельствах или в странных конфигурациях, но я думал, что это будет очень необычно. –
Ну, я не мог найти документацию об этом. В самом деле, если бы я мог быть уверен, что через несколько секунд он покраснет, все будет хорошо. В противном случае я думал, что это можно провести там бесконечно. И поскольку файл был бы очень маленьким и очень часто доступным, я полагал, что у него будет очень хороший шанс остаться в кеше навсегда (пока система не выключится). –