J'ai une application multi-thread. Mon problème est que parfois je reçois une erreur comme le programme ne peut pas accéder à un fichier car il est utilisé par autre chose (autre partie de l'application).La meilleure solution pour résoudre le fichier ne peut pas accéder à l'erreur
En ce moment, j'ai attrapé l'exception et répété la tâche après un délai de 100ms.
Cela fonctionne comme l'application n'ouvre pas les fichiers si souvent et il est ouvert les fichiers juste pour une courte période.
Bien que je ne suis pas heureux avec cette solution car elle est moche, et il peut encore aller mal.
Y a-t-il de bons moyens de résoudre ce problème? S'il n'y a pas de réponse facile et que vous avez besoin de plus d'informations sur l'application (quels fichiers, pourquoi je pourrais accéder en même temps) je peux répondre, j'essaie juste de garder la question simple, et générique.
Cordialement Daniel
EDIT:
je compose quelque chose de rapide, ce que vous en pensez au sujet de cette solution, ce n'est pas la plus générique, mais n'a pas eu une meilleure idée tout à l'heure:
Lorsque le programme essaie d'écrire dans le fichier, vérifiez s'il est utilisé ou non. Si elle est utilisée, collecter des données dans la mémoire, dès que l'application veut réécrire dans le fichier et le fichier est libre insérer dans toutes les données.
Ce n'est toujours pas le meilleur, mais cela pourrait donner plus d'idées.
Comment ouvrir les fichiers? Pouvez-vous utiliser le paramètre 'FileShare.ReadWrite' dans le constructeur' FileStream'? Voir http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx – Gabe
question connexe http://stackoverflow.com/questions/3808474/whats-the-right-pattern-for-waiting-on-a -file-lock-to-be-released – PeskyGnat
@Gabe J'utilise StreamWriter. Quand je lis le fichier j'ai besoin de lire toutes les données jusqu'à la fin, quand j'insère j'insère des données à la fin. Ne sera-t-il pas doggy (perdre des données) si je partage le fichier? – Daniel