Nous surveillons la progression d'une application personnalisée (dont la source n'est pas sous notre contrôle) qui écrit dans un manifeste XML. Parfois, l'application est bloquée en raison de l'impossibilité d'écrire dans le fichier manifeste. Bien que nous couvrons nos traces en fermant explicitement le handle de fichier en utilisant File.Close et en créant également les variables de fichier dans Using Blocks. Mais d'une manière ou d'une autre cela continue à se produire. (Notre application est multithread et au plus trois threads peuvent accéder au fichier.) Une autre chose intéressante est que leur application met à jour ce manifeste à trois événements différents (ajouter des éléments, supprimer des éléments, compléter des éléments) mais nous ne souffrons que d'un événement (achèvement des articles). Mon code est répertorié iciComment éviter le blocage de fichiers
using (var st = new FileStream(MenifestPath, FileMode.Open, FileAccess.Read))
{
using (TextReader r = new StreamReader(st))
{
var xml = r.ReadToEnd();
r.Close();
st.Close();
//................ Rest of our operations
}
}
espérons que le lien suivant vous aide. http://stackoverflow.com/questions/119548/problem-in-writing-to-single-file-in-web-service-in-net – pradeeptp
Exactement la bonne chose à faire - en utilisant le verrouillage afin que les threads n'essaient pas pour accéder au fichier en même temps. A travaillé pour moi quand j'ai plusieurs threads se connectant au même fichier. Créez une bibliothèque pour gérer l'accès au fichier et vous êtes en or. – ScottCher