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 :

Comment passer une information entre des threads ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut Comment passer une information entre des threads ?
    Bon je suis désolé pour cette question, mais je suis un poil perdu.

    Mon but c'est d'avoir un programme (pas de gui) qui lance un thread qui va communiquer sur le port seriel. Jusque la, tout va bien, le thread se lance, le main thread est pas bloqué. Seulement maintenant, j'aimerais que le main thread soit averti quand l'autre thread passe une "étape" (pour pouvoir mettre un message dans la console par exemple). Mon probleme c'est que les seuls exemples que j'ai trouvés disent que pour envoyer une donnée a un autre main, il "suffit" d'avor une variable publique ou on met la valeur, alors evidemment c'est pas ce que je veux, faudrait que mon main thread "scrute" cette variable, donc soit bloqué ( c'est en tout cas l'idée que je m'en fais).

    Les autres exemples que j'aie trouvé parlent de beginInvoke ou Invoke, mais tous les exemples sont donnés par rapport à une GUI, ce qui. pour le moment, ne me concerne pas.

    Est-ce que quelqu'un aurait un exemple simple pour faire ce que j'aimerais (en espérant que j'ai été assez clair...)

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Tu peux utiliser un BackgroudWorker et t'abonner à l'événement ProgressChanged.

  3. #3
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    Merci! je m'y mets de ce pas!

  4. #4
    Membre expérimenté
    Avatar de Ecosmose
    Homme Profil pro
    Archi SI / Soft / Réseau / SCADA /Automate
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Archi SI / Soft / Réseau / SCADA /Automate
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Par défaut
    As tu pensé à créer des événements 'faits maisons' (donc pas forcément associé aux événements de la GUI) des threads secondes ...puis tu inscrit ces événement aux méthodes du thraed principal ou dumoins de celui qui va ytraiter les evenements

    du style
    MaClasseFille.e += new eventHandler(MaclasseMere.maMethode())

  5. #5
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    Alors je t'avouerais qu'en me baladant sur le net j'ai vu deux trois fois des choses du genre, mais n'ayant pas trouvé de tuto explicite et basique, j'ai pas poussé plus loin la recherche...

    ( faut aussi dire que je bosse dans un endroit un peu paumé ou y'a pas de librairie qui vende des livres sur le c# ...)

    Tant que j'y suis, j'en profite pour continuer un peu le thread, j'ai mis en place un background worker qui fonctionne vraiment bien c'etait inesperé..
    je me dis ljuste que je dois etre en train de faire un truc débile, ce que j'aimerais faire c'est, dans le cas ou ma fonction en background reussi, en lancer une suivante en background et, étant donné que ca a fonctionné la premiere fois, j'ai juste refais la meme chose une seconde fois... ce qui fait en gros que dans la fonction "RunWorkerCompleted" du premier background worker, j'en crée un suivant qui effectue la tache suivante.

    Au fond de moi j'ai vraiment l impression que c'est du travail de singe et que y'a une solution beaucoup plus simple, vous sauriez m'éclairer?

    merci!

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    2 choses avec les thread

    Soit tu dois enchainer des traitements "différents" et à ce moment là, la fin d'un thread qui lance un nouveau thread, c n'est pas abérrant

    Soit, tu lances le même traitement mais seulement une fois que le précédent est finie... et à ce moment là, autant ne travailler qu'avec un seul thread....

    et utiliser soit des booleens (ou des flags) pour savoir dans quel état tu es !

    Dans le cas 2, ton thread ne s'arrète jamais (sauf demande du père que tu dois gérer)...

    The Monz, Toulouse

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

Discussions similaires

  1. Comment passer une valeur entre activités ?
    Par TheBeginer dans le forum Android
    Réponses: 2
    Dernier message: 03/12/2014, 11h22
  2. Passer une information entre Eclipse et le AVD
    Par Nadou90 dans le forum Android
    Réponses: 1
    Dernier message: 24/04/2013, 16h39
  3. Réponses: 5
    Dernier message: 16/08/2011, 15h29
  4. [QThread] Comment attendre une information d'un thread dans le thread principal ?
    Par f.denis dans le forum Multithreading
    Réponses: 5
    Dernier message: 15/04/2010, 11h57
  5. Réponses: 6
    Dernier message: 14/12/2006, 11h36

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