Je suis en train d'écrire un fichier d'audit qui écrit le nom d'utilisateur, l'heure, et l'ancienne/modifié les valeurs de plusieurs variables dans l'application pour chaque utilisateur quand ils utilisent mon application. Il utilise un FileStream
et StreamWriter
pour accéder au fichier d'audit. Toutes les vérifications pour chaque utilisateur seront écrites dans le même fichier.Comment gérer les accès simultanés aux fichiers avec un flux de fichiers/flux de données?
Le problème est que lorsque deux utilisateurs mettent à jour ce fichier d'audit en même temps, l '"ancienne valeur" de chaque variable est mélangée entre les utilisateurs. Pourquoi est-ce et comment pouvez-vous résoudre le problème de concurrence ici?
Une partie du code, raccourci par souci de concision ...
Dim fs As FileStream
Dim w As StreamWriter
Public Sub WriteAudit(ByVal filename As String, ByVal username As String, ByVal oldAddress As String, ByVal newAddress As String, ByVal oldCity As String, ByVal newCity As String)
Dim now As DateTime = DateTime.Now
Dim audit As String = ""
audit += now + "," + username + "," + oldAddress + "," + newAddress + "," + oldCity + "," + newCity
fs = New FileStream(filename, FileMode.Append)
w = New StreamWriter(fs)
w.WriteLine(audit)
w.Close()
fs.Close()
End Sub
Ce vit dans une classe AuditLogger, qui est référencé par une variable d'instance (réaffectés à chaque fois que la fonction est accessible).
besoin de voir le code. –
J'ai ajouté un extrait de code. –
Quel système d'exploitation est le serveur sur lequel cela fonctionne? (Vous pouvez peut-être utiliser un système de fichiers transactionnel.) –