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

Windows Forms Discussion :

appel de fonction en fin de thread


Sujet :

Windows Forms

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Par défaut appel de fonction en fin de thread
    Bonsoir à tous,

    voilà j'ai créer un thread sur lequel j'appel la méthode start

    à la fin de son exécution j'aimerai réactiver les quelques composants de mon formulaire comment est ce que je pourai faire ca?


    Merci bien

    bonne soirée

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    void MyThreadTest()
    {
      this.Enabled = false;
      Thread a = new Thread(new ThreadStart(ThreadMethod));
      a.Start();
     }
     
    void ThreadMethod()
    {
     try
     {
      ...
     }
     finally
     {
       this.Invoke(new MethodInvoker(delegate{
         this.Enabled = true;
        }));
     }
    }

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Par défaut
    Super merci, ca a directement fonctionné!

    au fait est ce que c'est la seule méthode?

    ou bien il y en a d'autre.

    j'au aussi une autre question a quoi sert le join() d'un thread précisément?

    encore merci guys

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    La méthode join sert à bloquer le thread actuel jusqu'à ce que le thread sur lequel join a été appelé se termine. Du coup ça permet d'introduire de nouvelles méthodes pour faire ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.Threading.Thread a = ...
    a.Join();
    DoSomething();
    Le problème est que le thread actuel sera bloqué, et que du coup, à moins d'être sur un thread travailleur crée pour l'occasion, ça n'a pas vraiment d'intéret car cela reviendrais à faire le travail directement sur le thread actuel.
    Par contre si on lance plusieurs threads en même temps on peut utiliser Join pour être sur d'attendre la fin de l'exécution de tous les threads.

    Sinon on peut aussi faire des boucles (en général c'est affreux) ou alors utiliser, peut être, le composant BackgroundWorker (introduit avec .NET 2.0) qui permet de s'abonner à un évènement qui sera appelé lorsque le travail sera terminé.

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    On peut aussi appeler la méthode en asynchone (utilisation du ThreadPool de manière transparente). Cela permet de faire le traitement de fin dans la méthode AsyncCallback. Mais l'intérêt est limité dans le cas présent ^^

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Par défaut
    Ok merci les gars ca ma bien aidé

    Tchouusss!!!

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Par défaut
    Finallement j'ai un autre problème!

    lorsque je lance mon thread et que je fais un Abort dessus et que je le relance avec de nouveau paramettre il ne fait rien est-ce normale?

    ça donne au début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ThreadStart threadDelegate = new ThreadStart(LaunchProcessingFileThread);
    this.JobThread = new Thread(threadDelegate);
    this.JobThread.Start();

    entre-temp il y a manip d'un fichier

    et lorsque j'Abort ca donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                this.JobThread.Abort();
                this.JobThread = null;
    je le réinitialise même et toujours rien

    pourquoi? est-ce qu'il faut faire une certaine manip? est ce que l'ouvertur du fichier influ sur le lancement du thread?

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Par défaut
    Hhhaaa oui je viens de faire un throw et il me dit probleme d'E/S je vous tiens au courant!

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Par défaut
    C'est bon les gars j'ai plus de problèmes encore merciiii!!!
    ++

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

Discussions similaires

  1. Thread qui appel une fonction ?
    Par gastoncs dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/03/2015, 18h49
  2. Réponses: 4
    Dernier message: 04/11/2014, 15h08
  3. Appeler une fonction en fin de script
    Par Oprichnik dans le forum Langage
    Réponses: 4
    Dernier message: 26/08/2007, 23h42
  4. Réponses: 6
    Dernier message: 30/09/2005, 00h53

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