Bonjour à tous,
Mon problème est le suivant: mon application en csharp écrit des infos dans un fichier log. Je souhaite pouvoir lire ce fichier au fur et à mesure afin de pouvoir fermer l'application lorsqu'une certaine info est inscrite dans ce log.
Voici mon code:
Tout ca fonctionne... sauf que parfois j'ai une exception "IndexOutOfRangeException" qui est levée sur la ligne "sLine = sr.ReadLine();"
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 // déclaration et creation du FileStream public FileStream sw_log; sw_log = new FileStream(logfilename, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read); ... ... // ecriture dans le log sw_log.Write(Encoding.UTF8.GetBytes(tmpText), 0, Encoding.UTF8.GetByteCount(tmpText)); ... ... // lecture du log depuis le début (partie de code appelée fréquemment) log.sw_log.Seek(0, SeekOrigin.Begin); StreamReader sr = new StreamReader(log.sw_log); string sLine = sr.ReadLine(); while (sLine != null) { if(sLine.Contains("ERROR"))) { ... ... break; } sLine = sr.ReadLine(); } log.sw_log.Seek(0, SeekOrigin.End);
Probable I/O race condition detected while copying memory. The I/O package is not thread safe by default. In multithreaded applications, a stream must be accessed in a thread-safe way, such as a thread-safe wrapper returned by TextReader's or TextWriter's Synchronized methods. This also applies to classes like StreamWriter and StreamReader.
Voilà... si quelqu'un à une idée, je lui en serais vraiment reconnaissant.
Merci
K.
Partager