IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Probleme pour lire et ecrire dans un meme flux


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Par défaut Probleme pour lire et ecrire dans un meme flux
    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.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Tu lis et ecris dans ton fichier dans des threads différents ?

    Sinon c'est qd même étrange pour une appli de lire le contenu de son propre fichier de log pour savoir si une erreur à eu lieu. Il y a comme un petit problème de design, peut être peux tu nous expliquer pourquoi tu procèdes ainsi ?

Discussions similaires

  1. Probleme pour lire un fichier .swf dans une fenêtre
    Par solaimana dans le forum NetBeans
    Réponses: 0
    Dernier message: 27/01/2014, 13h06
  2. [JAR]Probleme pour inclure un jar dans une appli Web
    Par ouedmouss dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/12/2005, 09h40
  3. Probleme pour faire une somme dans header ??
    Par snoop57 dans le forum Access
    Réponses: 7
    Dernier message: 01/12/2005, 13h40
  4. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  5. Probleme pour lire un fichier Ini
    Par Sebinou dans le forum C++Builder
    Réponses: 11
    Dernier message: 10/03/2004, 23h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo