Не удалось запустить пользовательскую службу при незапланированной перезагрузке на сервере? - PullRequest
0 голосов
/ 21 января 2009

Я создал службу и записывает информацию в XML-файл.

Иногда кажется, что в основном это происходит при незапланированной перезагрузке, служба не может запуститься, потому что используемый файл "заблокирован". Эта ошибка возникает, когда система все еще запускается, поскольку мой сервис настроен на «автоматический запуск».

Это под windows 2003.

Кто-нибудь знает, почему это происходит?

спасибо.

The process cannot access the file 'D:\myService\eventlog.xml' because it is being used by another process.

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.Xml.XmlTextWriter..ctor(String filename, Encoding encoding)
at System.Data.DataTable.WriteXml(String fileName, XmlWriteMode mode, Boolean writeHierarchy)
at System.Data.DataTable.WriteXml(String fileName)
at myService.c_control.addXmlLog(eventStatus timeStatus) 

Ответы [ 2 ]

0 голосов
/ 26 января 2009

Если проблема вызвана тем, что служба запускается слишком рано после перезагрузки, почему бы не проверить время последней перезагрузки и пропустить запуск задачи через много минут после перезагрузки. System.Environment.TickCount даст вам количество миллисекунд с момента последней загрузки.

http://msdn.microsoft.com/en-us/library/system.environment.tickcount.aspx

0 голосов
/ 21 января 2009

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

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