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 :

[c#][threading] communication entre threads


Sujet :

C#

  1. #1
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut [c#][threading] communication entre threads
    Bonjour,
    j'aimerai que le main thread puisse envoyer des données à un autre thread(créé dans ce main thread), dés qu'il y a un evenement particulier dans la mainForm (appui sur un bouton par exemple).
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Ca fait 2 threads pour gérér les événements :
    Des fois que deux utilisateurs cliquent en même temps

  3. #3
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    lol ouai mais nan , c'est juste le mainthread qui gere les evenements et qui aprés coups en informe le deuxieme thread. J'ai dejà vu quelqu'un poser cette question, par hasard, mais je n'arrive pas à y remettre la main dessus

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Avant de trouver une solution, il faudrait être convaincu qu'il faut un autre thread : donnes des détails.

  5. #5
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    voilà, en fait, j'etais interessé par capturer les paquets de données transitant entre mon pc et internet, et la seule librairie qui soit à la hauteur est wpcap. J'ai trouvé ce site qui propose un wrapper "light" de la librairie:http://www.codeproject.com/dotnet/do...=26#xx839162xx
    Dans le code, il y a une methode ReceivePacket qui est appelé à chaque reception d'un paquet, et le parametre pour le paquet est un tableau de bytes. Donc j'aimerai bien traiter ce tableau de byte en l'envoyant (comme parametre)à un autre thread. Ca permet de pas encombrer ReceivePacket . En effet suffit que je rajoute trop de ligne de code et au bout d'une centaine de paquets reçus, on dirait que ReceivePacket ne suit plus et ca deconnecte le socket.
    Voilà

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    La difficulté n'est pas de créer un thread supplémentaire mais de gérer la communication entre les deux.
    A mon avis, il faut passer les données par une FIFO (classe Queue). Le handler d'evt place la donnée dans la FIFO et le thread de traitement scrute la taille de la FIFO pour traiter les paquets.
    Chaque accès à la FIFO doit être synchronisé par exemple avec Monitor.Enter(_queue) / Monitor.Exit(_queue)
    Utilise ThreadPool.QueueUserWorkItem() pour lancer le thread de traitement.
    Pas besoin de s'occuper de la fin de ce thread puisqu'il est détruit par le ThreadPool à la fermeture de l'appli.

    Voilà.

  7. #7
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    impec,donc y'a une solution merci je vois ca demain.

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

Discussions similaires

  1. [C#] Communication entre thread
    Par kekesilo dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/09/2007, 19h48
  2. [thread] communication entre threads
    Par untipy dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 30/08/2007, 15h47
  3. Problème de communications entre threads
    Par maya09 dans le forum Windows
    Réponses: 1
    Dernier message: 22/02/2006, 22h18
  4. [VB.Net][Threading] Communication entre processus
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 15h15
  5. Communication entre thread
    Par JFPS Soft dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 03/02/2006, 17h38

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