FileStream le verrouillage d'un fichier pour la lecture et l'écriture

J'ai le bloc de code suivant qui me donne un mal de tête.

Logiquement, il devrait fonctionner comme je suis en utilisant le filestream fournir la serrure à l'intérieur de l'instruction à l'aide. Quand il arrive à la ligne qui crée le StreamWriter, il ne parvient pas en disant "le fichier n'est pas accessible en écriture".

Maintenant mon programme est une application multithread. Un thread peut essayer d'écrire dans ce fichier. J'ai besoin du programme de verrouiller le fichier, lire le contenu, vérifier le contenu, puis d'écrire des modifications. Au cours de ce processus, aucune autre thread devrait être en mesure d'accéder au fichier.

using (var fs = File.Open(fileLoc, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
    var sr = new StreamReader(fs);
    var str = sr.ReadToEnd();
    var strArray = str.Split(',');
    if (strArray.Any(st => st == text))
    {
        return;
    }
    sr.Close();

    var sw = new StreamWriter(fs);
    sw.Write(str + text);
    sw.Flush();
    sw.Close();
}
InformationsquelleAutor Talon | 2012-12-04