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 :

Bouton d'interface graphique bloqué


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 144
    Par défaut Bouton d'interface graphique bloqué
    Bonjour à tous,
    J'ai fait un programme C# avec une interface graphique sous Visual Studio 2005, et une fonctionnalité de test. Lorsque je clique sur ON le test démarre et sur OFF le test devrait s'arrêter.
    Le problème, c'est que lorsque je clique sur ON toute la GUI reste bloquée.
    Je me suis dit qu'il fallait peut-être réaliser la GUI dans un thread séparé du traitement, qu'en pensez-vous ?
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par levalp Voir le message
    Bonjour à tous,
    J'ai fait un programme C# avec une interface graphique sous Visual Studio 2005, et une fonctionnalité de test. Lorsque je clique sur ON le test démarre et sur OFF le test devrait s'arrêter.
    Le problème, c'est que lorsque je clique sur ON toute la GUI reste bloquée.
    Je me suis dit qu'il fallait peut-être réaliser la GUI dans un thread séparé du traitement, qu'en pensez-vous ?
    Merci d'avance.
    C'est le traitement que tu dois mettre dans un thread séparé. Regarde du côté du BackgroundWorker.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    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

    j'en pense que c'est la "seule" solution propre à faire

    sinon, tu pourrais toujours mettre dans ton algo de traitement du code genre

    application.DoEvent();

    mais j'en suis pas fan.. il vaut mieux faire un vrai Threading de ton traitement
    qui a passer le bouton en enabled = false tant que le traitement n'est pas
    achevé

    The Monz, Toulouse

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 144
    Par défaut
    OK, merci pour vos avis.
    Je vais essayer demain de mettre ça dans 1 thread séparé.

  5. #5
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Fait ton code async
    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
     
    				void AsyncImport_Callback(IAsyncResult result)
    				{
    					MethodInvoker caller = (MethodInvoker)result.AsyncState;
    					caller.EndInvoke(result);
    				}
     
    				void AsyncDoSomething()
    				{
    					for (int i = 0; i < 1000000; i++)
    					{
    						Debug.WriteLine(i.ToString());
    					}
    				}
     
    				private void button1_Click(object sender, EventArgs e)
    				{
    					MethodInvoker invoker = new MethodInvoker(AsyncDoSomething);
     
    					invoker.BeginInvoke(new AsyncCallback(AsyncImport_Callback), invoker);
     
    				}

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 144
    Par défaut
    Citation Envoyé par shwin Voir le message
    Fait ton code async
    Salut Shwin,
    Merci pour ta suggestion et le code. La méthode AsyncDoSomething() sera-t-elle exécutée en parallèle comme si elle était dans un thread différent ?

  7. #7
    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
    Oui (d'ailleurs elle est dans un thread différent).

Discussions similaires

  1. [Débutant] gérer la visibilité des boutons par interface graphique
    Par Adem84 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 10/02/2010, 12h45
  2. Réponses: 1
    Dernier message: 22/02/2009, 21h54
  3. Interface graphique et clic de bouton
    Par Tsukaasa dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 12/09/2008, 17h13
  4. interface graphique avec bouton parcourir
    Par Wael Maaoui dans le forum Tkinter
    Réponses: 2
    Dernier message: 26/03/2007, 13h00
  5. [INTERFACE GRAPHIQUE] Bouton et CheckBox
    Par Hoegaarden dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 14/02/2006, 18h15

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