2008-10-30 4 views
0

J'ai une application simple qui écrit dans un fichier xml à chaque clic de bouton. Une fois cela fait, je lis le fichier Xml peu de temps après (comme dans, quelques lignes ci-dessous, sans aucune méthode à mettre entre les deux). Lorsque l'application s'exécute pour la première fois, le fichier xml est écrit dans/read from fine, mais si j'appuie à nouveau sur le bouton, je reçois un "fichier en cours d'utilisation par un autre processus". Je fais tout le flush, je ferme, je me débarrasse de mes flux et j'ai l'intention d'utiliser ProcessMon pour vérifier quel processus contient le fichier.Meilleure stratégie de synchronisation

Programatically, quelle est la meilleure stratégie pour éviter ce problème?

Merci

+0

Pouvons-nous voir du code? –

Répondre

1

Assurez-vous que le fichier est écrit puis utilisez les données dans la mémoire que vous venez d'écrire dans le fichier.
Vous n'avez pas besoin de le relire.

0

la solution la plus simple serait de verrouiller simplement tout le code qui accède au fichier xml

à savoir

object locker = new Object(); 

.... 

lock (locker) 
{ 
    //write xml file 
} 
0

Je crois avoir répondu celui-ci déjà ailleurs. Appelez la méthode Flush() juste avant de fermer et utilisez des objets FileStream distincts. Je pense que l'objet FileStream est le problème, c'est pourquoi il est toujours bon pour Flush() quand vous avez fini d'écrire.

Cependant, il n'y a pas de méthode équivalente pour les lecteurs. c'est pourquoi j'ai fini par utiliser des objets FileSTream.

Rudedog

Questions connexes