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 :

Lire en boucle un Stream en tâche de fond.. thread séparé?


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut Lire en boucle un Stream en tâche de fond.. thread séparé?
    Bonjour,

    j'ai un programme principal (Windows Form) qui instancie un objet que j'appelerai Reader en lui fournissant un Stream.

    Ce Reader doit lire en continue ce qui arrive dans le stream fourni tant que Reader n'est pas détruit. Quand il reçoit des données valides, il doit générer un événement pour les envoyer au programme principal.

    Mon but est en fait de fournir la propriété SerialPort.BaseStream à mon Reader et de recevoir certaines données après interprétation, dans mon programme principal, sans que ce dernier ne soit en attente, bien sûr.

    J'ai commencé avec Stream.BeginRead() qui fait un rappel sur une méthode Interpreter(IAsyncResult result) mais cette dernière n'est jamais appelée, sauf quand le programme principal rend la main...

    Je suppose donc qu'il faut que Reader, lors de sa construction, crée un thread séparé qui sera chargé de lire/interpreter le Stream...

    Un developpeur avancé du C# pourrait-il me dire quelle architecture est la plus adaptée ? J'ai cherché en vain des exemples sur internet.. et je ne dois pas chercher où il faut.

    Merci d'avance pour toute aide.

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    En effet l'idéal est d'avoir un thread qui fait les traitements en background.

    Cela implique une synchro pour l'accès à la ressource qui nourris le thread (ton stream) mais egalement une synchro sur la ressource qui transmet les resultats.

    Commence par apprendre à creer des Thread,
    ensuite jette un coup d oeil sur le lock (exclusion mutuelle) afin de synchroniser tes ressources.

    Pour des questions de performances, il serait bien de ne pas (par exemple), instancier, utiliser et detruire tous tes objets de traitement à l'interieur du threadpour chaque char...

    Mais plustot avoir des objets re-initialisable, de les garder toujours en memoire (sauf contre indication) et de les utiliser tout les N chars...
    Pour les details, cherche tout seul !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut
    Merci Zaan, c'est encore un peu obscur pour moi mais je comprends que ce n'est pas simple à mettre en oeuvre à mon stade :-).

    Je vais faire autrement pour ce programme et suivre tes conseils pour mon apprentissage .

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

Discussions similaires

  1. Lire et enregistrer du streaming http
    Par Aquanum dans le forum Réseau
    Réponses: 7
    Dernier message: 04/03/2009, 17h52
  2. [FLASH 8] Lire en boucle
    Par Mister Nono dans le forum Flash
    Réponses: 11
    Dernier message: 22/10/2008, 13h02
  3. Réponses: 4
    Dernier message: 11/05/2007, 19h45
  4. lire en boucle un fond sonore au format ogg
    Par ramdam dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/01/2007, 10h52
  5. [VB6] Comment faire pour lire un fichier en streaming ?
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/04/2006, 17h56

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