¿No se pudo iniciar el servicio personalizado cuando hay un reinicio no programado en el servidor?

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

  •  19-08-2019
  •  | 
  •  

Pregunta

Creé un servicio y lo que hace es escribir información en un archivo xml.

En algún momento, parece ocurrir principalmente con un reinicio no programado, el servicio no puede iniciarse porque el archivo utilizado está "bloqueado". Este error ocurre mientras el sistema aún se está iniciando, ya que mi servicio está configurado en "inicio automático".

Esto está bajo Windows 2003.

¿Alguien sabe por qué sucede esto?

gracias.

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) 
¿Fue útil?

Solución

Si el problema se debe a que el servicio se inició demasiado pronto después de un reinicio, ¿por qué no verificar para ver el último tiempo de reinicio y omitir la ejecución de la tarea hasta tantos minutos después del reinicio? System.Environment.TickCount le dará la cantidad de milisegundos desde el último tiempo de arranque.

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

Otros consejos

¿Es posible que su servicio esté accediendo a esto dos veces, intentando obtener un bloqueo exclusivo cada vez?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top