Как отслеживать, когда мое приложение неожиданно закрылось? - PullRequest
0 голосов
/ 20 апреля 2010

Я пишу приложение, целью которого является ведение журнала различных событий. Среди них я также хотел бы, чтобы приложение было закрыто - даже если это неожиданно произойдет из-за потери питания.

Естественно, когда отключается электричество, у меня нет возможности что-либо написать. Поэтому моя идея заключалась в том, чтобы постоянно записывать временную метку в каком-то известном месте (скажем, раз в минуту), и при следующем запуске приложения оно могло определить приблизительное время неожиданного завершения работы. Точность в 1 минуту была бы приемлемой для меня.

Однако меня беспокоит, что кэширование на уровне ОС и диска может помешать этому подходу. Есть ли лучший способ или нет - как сделать так, чтобы только что записанные данные действительно были записаны на физический носитель?

Добавлено: О, почти забыл строку модных слов: Windows XP и выше; .NET 3.5; C #.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2010

Неожиданные отключения регистрируются в журнале системных событий.

Когда ваше приложение корректно завершает работу, запишите его в файл журнала. В следующий раз, когда ваше приложение запустится, проверьте, было ли оно закрыто так, как оно должно было быть, иначе проверьте журнал системных событий.

1 голос
/ 20 апреля 2010

Редактировать: удален неправильный ответ (из-за неправильного чтения вопроса)

Вы можете использовать метод FlushFileBuffers, но он все равно будет только записывать его на устройство, вы все равно не сможете заставить его записать настоящий диск (насколько я знаю). http://www.pinvoke.net/default.aspx/kernel32/FlushFileBuffers.html?diff=y

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...