Bonjour tout le monde !
Soit un programme qui écrit :
- 25 fichiers dans un répertoire local
- 25 fichiers dans un répertoire distant
- 25 fichiers dans un répertoire local
Soit un autre programme qui lance 20 fois ce programme avec un paramètre chaque fois différent afin de n'avoir aucun doublon de nom de fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 static void Main(string[] args) { string s; string dir1 = "C:\\temp\\testwritefiles\\test1"; string dir2 = "C:\\temp\\testwritefiles\\test2"; string dir3 = string.Concat("\\\\server\\temp\\test"); try { for (int i = 0; i < 30; i++) { using (StreamWriter sw = new StreamWriter(string.Concat(dir1, "\\", args[0], "_", i.ToString(), ".log"), false, Encoding.Default)) { s = string.Concat("Maître corbeau", Environment.NewLine, "sur un arbre perché", Environment.NewLine, "tenait dans son bec", Environment.NewLine, "un fromage"); sw.Write(s); sw.Close(); } using (StreamWriter sw = new StreamWriter(string.Concat(dir3, "\\", args[0], "_", i.ToString(), ".log"), false, Encoding.Default)) { s = string.Concat("Maître corbeau", Environment.NewLine, "sur un arbre perché", Environment.NewLine, "tenait dans son bec", Environment.NewLine, "un fromage"); sw.Write(s); sw.Close(); } using (StreamWriter sw = new StreamWriter(string.Concat(dir2, "\\", args[0], "_", i.ToString(), ".log"), false, Encoding.Default)) { s = string.Concat("Maître corbeau", Environment.NewLine, "sur un arbre perché", Environment.NewLine, "tenait dans son bec", Environment.NewLine, "un fromage"); sw.Write(s); sw.Close(); } } } catch (Exception ex) { using (StreamWriter sw = new StreamWriter(string.Concat(Path.GetDirectoryName(dir1), "\\", args[0], "_", "TestWriteFiles", ".log"), false, Encoding.Default)) { sw.Write(ex.Message); sw.Close(); } } }
Si je lance cette bombe sans écrire les fichiers distants, ça joue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (int i = 0; i < 20; i++) { Utils.Shell(string.Concat(startupPath, "\\TestWriteFiles.exe"), i.ToString()); }
Si je les écrit, j'ai une erreur indiquant que le chemin réseau est refusé.
Bon, je conçoit que ce petit test est fait pour faire péter la baraque et n'a aucun sens en soi.
Sauf que j'ai une application qui tourne sur un serveur qui est installé sur une station WMWare et dont le réseau est relativement lent.
Dans cette application, je dois écrire des fichiers d'échange pour des donnés ERP.
En plus, j'écris des logs pour pouvoir surveiller le bon fonctionnement de la chose.
Et j'ai eu de graves pertes de données :
- des fichiers manquants
- des lignes manquantes dans les fichiers
J'ai résolu le problème en mettant un sleep après chaque appel du programme
Je ne cherche pas une solution mais voudrais seulement savoir ce que vous en pensez.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for (int i = 0; i < 20; i++) { Utils.Shell(string.Concat(startupPath, "\\TestWriteFiles.exe"), i.ToString()); Thread.Sleep(1000); }
Bonne soirée à tous
Partager