пользовательской службе не удалось запуститься при незапланированной перезагрузке сервера?

StackOverflow https://stackoverflow.com/questions/465049

  •  19-08-2019
  •  | 
  •  

Вопрос

Я создал сервис, и то, что он делает, - это записывает информацию в 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) 
Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top