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:
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);
Tout ca fonctionne... sauf que parfois j'ai une exception "IndexOutOfRangeException" qui est levée sur la ligne "sLine = sr.ReadLine();"

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.