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 :

suspension pui reprise d'une boucle for


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 68
    Points
    68
    Par défaut suspension pui reprise d'une boucle for
    Bonjour à tous,

    Je cherche à interrompre une boucle for dans l'espoir de lancer une autre form qui me permet d'effectuer certain traitement.

    Ma form principale permet d'effectuer des enregistrement en base à partir de donnée affiche dans un gridview;

    En validant sur un bouton, je parcours l'ensemble des lignes selectionnées de mon dataview, j'effectue certaine verification et j'enregistre en base ce qu'il me faut.

    Cependant , il se peut que les vérifications fassent apparaitre des anomalies qu'il me faut corriger. Pour ce faire, je lance une autre form qui permet de faire les modifs nécessaire avant d'enregistrer en base les données.

    Problème lorsque je lance ma seconde fenêtre , l'execution de la premiere continue, or il faudrait qu'elle s'interrompe jusqu'à ce que la seconde fenetre soit fermer, et que la boucle reprenne la ou elle s'etait arrete.

    Voici mon code :

    Boucle de ma Form principale :

    dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ....
     Control.CheckForIllegalCrossThreadCalls = false;
    ...
    myThread =  new Thread(new ThreadStart(LancerConceptualisation));
    je demarre mon thread lorsque je clique sur un boutonde ma première form
    le thread execute la methode suivante :

    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
     
     private void LancerConceptualisation()
            {
                int nbsucces = 0;
                int nberreur = 0;
                string libConcept = string.Empty;
     
                for (int i = 0; i <= dgResbio.Rows.Count - 1; i++)
                {
                    if (dgResbio.Rows[i].Selected)
                    {
                        libConcept = dgResbio.Rows[i].Cells[LIBELLE].Value.ToString();
                        libConcept = libConcept.Substring(libConcept.LastIndexOf('/') + 1);
                        rtbTrace.Text += "Conceptualisation de " + libConcept + "...\n";
                        if (concept.IsLibelleConceptExist(libConcept))
                        {
                            alert = new Alerte(myThread);
                            alert.Show();
                            myThread.Join();
                        }
                        else
                        {
                            rtbTrace.Text += "Conceptualisation de " + libConcept + " terminé avec succès\n";
                            nbsucces += 1;
                        }
     
                    }
                }
                rtbTrace.Text += "Conceptualisation terminée : " + nbsucces + " succès - " + nberreur + " erreur(s)";
                myThread.Abort();
            }

    Code de ma seconde form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void pbPasser_Click(object sender, EventArgs e)
            {
     
                this.Close();
                trPere.Resume();
     
            }
    Comment puis-je organiser mes threads pour que lorsque je lance ma seconde form ma boucle principale s'interrompe jusqu'a ce que la seconde fenêtre valider les nouvelles infos et redemarre le thread de ma première boucle ???

    De la manière présenté ci dessus, je n'ai jamais accès ma seconde form..

    Merci d'avance

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Essayer de remplacer alert.Show() par alert.ShowDialog.
    Attention aux DialogResult des boutons autres que OK et Cancel.

    Celà dit, je ne vois pas pas bien l'intéret d'un Thread si on doit s'interrompre jusqu'au retour de la forme.

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Effectivement il n'y a aucun interet dans la mesure ou la methode showDialog
    fait exactement ce que je voulais merci bcp...

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

Discussions similaires

  1. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  2. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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