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

VB.NET Discussion :

MultiThreading et fichier de log


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Par défaut [MultiThreading] Comment gerer les accès simultané au fichier Log ?
    Salut,

    Je développe une appli qui doit utiliser le Multi-Threading.
    Le hic, c'est que lorsque j'ai deux thread qui essaye simultanément d'ajouter un message au fichier de Log de mon appli, j'ai un message d'erreur qui me dit que le fichier est déjà ouvert par un autres processus (et oui, normal !!)


    Ma question : Comment je peux gérer ca ? J'ai des pistes de reflexions :
    1. Pile de message en attente d'écriture dans le fichier de Log
    2. Attente de la libération du fichier de Log pour écrire le message
    3. Une autre proposition peut-être...?
    Bien sur, si vous avez des exemples concret à me proposer pour coder l'une ou l'autres des propositions, je suis preneur

    Pour information : Ma classe qui gére mes fichiers de log est du type Singleton.

  2. #2
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Par défaut
    Regarde du coté de la fonction

    Le mot clé lock marque un bloc d'instructions comme section critique en assurant le verrouillage par exclusion mutuelle d'un objet particulier,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Object thisLock = new Object();
    lock (thisLock)
    {    
          // Critical code section
    }
    http://msdn.microsoft.com/fr-fr/libr...cz(VS.80).aspx


    Edit : Au temps pour moi , je n'avais pas vu que c'etait du VB.Net, je ne sais pas par contre si cette fonction existe en VB

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Par défaut Merci
    Salut,

    Merci de cette piste qui m'a permis de découvrir SyncLock qui est l'équivalent VB de Lock en C#.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    L'exemple de MSDN est un peu foireux...
    Si les 2 threads créent chacun un objet et font le lock dessus, ça ne marche pas, puisque c'est 2 objets différents.
    Le mieux à mon avis est de garder le fichier ouvert, de partager le StreamWriter (ou tout autre objet utilisé pour accéder au fichier) entre les threads, et de synchroniser sur le StreamWriter

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    synclock vaut mieux l'utiliser avec une variable instanciée dans le new de la classe


    sinon pour gérer ca il est aussi possible de faire un thread qui gère l'écriture (while true avec un thread.sleep) dans le fichier avec les infos dans une collection type queue
    tous les threads ajoutent à la queue ce qu'ils veulent faire et le thread qui gère l'écriture s'occupe de vider la pile et d'écrire
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier de log
    Par Arkenstone dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 01/04/2005, 14h42
  2. [tomcat 5] [paramétrage] fichier de log System.out.println
    Par Aldo dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/02/2005, 14h41
  3. [Oracle 8i/Fichier de log] - fichier log pour analyse erreur
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 25/01/2005, 19h06
  4. [Tomcat] Fichier de logs
    Par yolepro dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 22/03/2004, 16h20
  5. Fichiers de Log
    Par Mouse dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/05/2003, 18h06

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