Bonjour,
Je travaille sur un programme qui effectue les opérations suivantes :
1/ Chargement d'un fichier XML sous forme d'un objet métier.
2/ Travail dans l'objet métier.
3/ Enregistrement de l'état de l'objet métier sous forme XML en lieu et place du fichier initial.
Ce programme est lancé par une tâche planifiée et tourne toutes les 10 minutes.
Parfois, il met plus de 10 minutes à tourner.
La tâche est paramétrée pour ne pas démarrer une seconde instance si la précédente n'est pas terminée.
Pourtant, parfois, le programme démarre une seconde fois alors que le fichier XML n'a pas encore été modifié.
J'ai en effet constaté que lorsque le lance le programme à la main, et que j'ouvre par exemple le fichier XML avec Notepad++, le fichier est parfois modifié plusieurs secondes, voir minutes, après la fin du programme.
Pourtant, XmlDocument n'est pas IDisposable, et Save() ne propose pas de Flush().
Qu'est-ce qui explique cette mise à jour différée ?
Comment l'empêcher ?
J'ai essayé de forcer myDoc = null suivi de GC.Collect() et SuppressFinalizer() mais ça ne change rien...
Partager