J'ai hérité des responsabilités de développement pour un ensemble de projets .NET qui incluent des services Windows, un site Web ASP.NET et des exécutables standard qui sont lancés via le gestionnaire de tâches.OK pour que plusieurs processus lisent à partir du même fichier texte?
Tous ces composants se connectent à une base de données MySQL. Actuellement, la chaîne de connexion chiffrée se trouve dans les fichiers individuels app.config/web.config. Je pense que c'est un peu pénible d'avoir à mettre à jour la chaîne de connexion à plusieurs endroits, donc j'ai eu l'idée de mettre la chaîne de connexion dans un fichier texte qui serait accessible par tous les composants individuels. Avant de passer à la vitesse supérieure, je voulais savoir si je pouvais introduire un bogue car il pourrait y avoir plusieurs processus essayant d'accéder à ce fichier texte en même temps. J'ai écrit une méthode universelle pour la lecture du fichier texte, et je pris soin de veiller à ce que le fichier est en cours d'ouverture en mode « lecture »:
public string AESDecryptFromFile(string path, string password, string IV)
{
if (!File.Exists(path))
throw new Exception("File not found: " + path);
string cryptogram;
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fs))
{
cryptogram = sr.ReadToEnd().Trim(new char[] { '\r', '\n', ' ' });
}
}
return AESDecrypt(cryptogram, password, IV);
}
Je n'ai aucune raison de croire que les processus verrouiller le fichier si je l'implémente de cette façon, mais je pensais que je demanderais.
Merci d'avance!
Pourquoi vous essayez de ne pas le tester? – mason
https://stackoverflow.com/questions/3527205/multiple-threads-reading-from-the-same-file –
@mason - Je voulais dire que je n'ai pas assez de trafic dans mon environnement de développement pour le prouver efficacement en dehors. Je suppose que j'aurais pu écrire un programme de test qui a engendré plusieurs threads. –