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#] Invoke dans un sous - sous thread !


Sujet :

C#

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Par défaut [C#] Invoke dans un sous - sous thread !
    Bonjour à tous,

    Je suis entrain de développer un logiciel qui se compose d'une fenêtre winform ainsi qu'un d'un thread qui s'occupe d'écouter sur un port TCP/IP.

    Le problème est le suivant dans le thread en lui même je parviens à contrôler ma fenêtre principale via un invoke, mais par contre impossible de la contrôler à partir du sous thread qui tourne dans le 1er thread !

    Comment dois je m'y prendre ? Est-ce tout d'abords possible ? Là je sèche complètement !!!

    Merci d'avance,

    bonne soirée à tous

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Par défaut
    Bonjour,

    Il faut que tu utilises dans ton "sous thread" des évènements que tu devras écouter dans ton thread principal.

    Exemple dans ton "sous thread" qui doit renvoyer un boolean, tu déclares :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public delegate void ThreadGeneratedEventHandler(object sender, Boolean state);
            public event ThreadGeneratedEventHandler OnThreadStateChanged;
    Puis quand il le faut tu génères l'évènement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.OnThreadStateChanged(this, false);
    Puis dans ton thread principal qui doit admettons activer un bouton lors de la génération de l'évènement. Tu déclare un delegate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private delegate void changeState(Boolean b);
    Et tu écoutes les évènements du "sous thread" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.TonSousThread.OnThreadStateChanged += new LaClasseDuSousThread.ThreadGeneratedEventHandler(LaMethodeAExecuter);
    Enfin du écrits tes méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void LaMethodeAExecuter(object sender, Boolean state){
    this.invoke(new changeState(ActiverBouton),state);}
    private void ActiverBouton(Boolean state){
    tonBouton.enabled = state;}
    Je ne sais pas si c'est très clair pour toi. Ce qu'il faut comprendre c'est que tu dois utiliser les évènements pour une communication inter-thread.

    Bonne journée.

Discussions similaires

  1. Lancer des threads perso dans les Actions sous weblogic
    Par jazziroquai dans le forum Weblogic
    Réponses: 2
    Dernier message: 11/05/2009, 11h44
  2. Comment inserer une image dans une table sous sql qerveur
    Par zeddy23 dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/02/2005, 08h51
  3. Recherche de texte dans un blob sous oracle
    Par Invité dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/05/2004, 11h11
  4. Deplacer un curseur dans un RichEdit sous visual c
    Par tweek dans le forum Windows
    Réponses: 7
    Dernier message: 14/01/2004, 00h29
  5. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00

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