0 votes

Le service personnalisé n'a pas réussi à démarrer lorsqu'il y a un redémarrage non planifié sur le serveur.

J'ai créé un service et ce qu'il fait, c'est écrire des informations dans un fichier XML.

Parfois, il semble se produire principalement lors d'un redémarrage non planifié, le service ne peut pas démarrer car le fichier utilisé est "verrouillé". Cette erreur se produit alors que le système est encore en train de démarrer car mon service est paramétré pour "démarrer automatiquement".

Cela se passe sous Windows 2003.

Est-ce que quelqu'un sait pourquoi cela se produit?

Merci.

Le processus ne peut pas accéder au fichier 'D:\myService\eventlog.xml' car il est utilisé par un autre processus.

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)

0voto

casperOne Points 49736

Est-il possible que votre service puisse y accéder deux fois, essayant d'obtenir un verrou exclusif à chaque fois ?

0voto

Tundey Points 2145

Si le problème est causé par le service démarrant trop tôt après un redémarrage, pourquoi ne pas vérifier la dernière heure de redémarrage et sauter l'exécution de la tâche jusqu'à ce que plusieurs minutes se soient écoulées depuis le redémarrage. System.Environment.TickCount vous donnera le nombre de millisecondes depuis l'heure de redémarrage.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X