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 :
je demarre mon thread lorsque je clique sur un boutonde ma première form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 .... Control.CheckForIllegalCrossThreadCalls = false; ... myThread = new Thread(new ThreadStart(LancerConceptualisation));
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 :
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 ???
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(); }
De la manière présenté ci dessus, je n'ai jamais accès ma seconde form..
Merci d'avance
Partager