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 :

Thread et Invoke...


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de SpecialCharacter
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Par défaut Thread et Invoke...
    Je suis les cours de developpez.com sur les Threads et en particulier celui de Sébastien Curutchet, j'ai adapté sa méthode de threads modifiant une ProgressBar à un thread modifiant une EditBox
    Etant plutôt débutant en Threads dotnet, je ne trouve pas mon erreur à la fermeture du programme:

    Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans System.Windows.Forms.dll

    Informations supplémentaires : Impossible d'appeler Invoke ou BeginInvoke sur un contrôle tant que le handle de fenêtre n'a pas été créé.
    Voici mon code:
    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
     
    namespace Threads
    {
        public partial class Form1 : Form
        {
            private delegate void EditBoxDelegateHandler(string str);
            private EditBoxDelegateHandler EditBoxDelegate;
     
            public Form1()
            {
                EditBoxDelegate = new EditBoxDelegateHandler(UpdateEditBox);
                InitializeComponent();
                Thread monThread = new Thread(new ThreadStart(ThreadProcess));
                monThread.Start();
            }
     
            private void UpdateEditBox(string str)
            {
                textBox1.Text = str;
            }
     
            private void ThreadProcess()
            {
                while (true)
                {
                    Invoke(EditBoxDelegate, textBox2.Text);
                    Thread.Sleep(1000);
                }
            }
        }
    }

  2. #2
    Membre confirmé Avatar de SpecialCharacter
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Par défaut
    J'ai trouvé une solution, il faut assurer la gestion des erreurs

    Code : 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
     
            private void ThreadProcess()
            {
                while (true)
                {
                    try
                    {
                        Invoke(EditBoxDelegate, textBox2.Text);
                    }
                    catch
                    {
                        Thread.CurrentThread.Abort();
                    }
                    Thread.Sleep(0);
                }
            }
    Ca peut vous paraitre bête, mais pour un débutant comme moi ça n'est pas automatique !

    En esperant que ce post éphémère serve à quelqu'un,

    Cordialement

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

Discussions similaires

  1. Problème avec Thread et invoke pour maj une textbox
    Par drichnifu dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/03/2012, 17h36
  2. Thread , Délégué , Invoke
    Par Panaméen dans le forum Windows Forms
    Réponses: 7
    Dernier message: 26/04/2009, 16h44
  3. Windows et Multi-Threading - Invoke
    Par zi_omnislasher dans le forum Windows
    Réponses: 1
    Dernier message: 26/10/2007, 10h13
  4. [C#][Thread][Invoke] petit problème de delegate
    Par clinic dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 22/06/2007, 11h38
  5. [VB.NET 1.1] [Thread] Méthode invoke
    Par toniolol dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/02/2006, 16h04

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