Bonjour à tous.
Je fait des essaie actuellement sur le passage d'information entre thread et notamment la modification de propriété d'objet.
J'ai trouver excellent tuto mais j'ai un souci.
En faite avec les tuto trouvé, j'arrive sans souci, à partir du thead principal, à modifier un label d'un autre thread.
Mais en utilisant la même méthode, impossible de rajouter la modification d'un groupebox.
Par exemple,dans mon thread principal (une IHM) j'ai déclarée.
Avec :
Dans la partie du thread secondaire (une autre FORM)
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 public partial class GestionReleve : Form { private delegate void PresenceSGBD(bool SGBD); private static IHMreleve.IMHReleve IHMForm; public GestionReleve() { InitializeComponent(); IHMForm = new IHMreleve.IMHReleve(); Thread IHM = new Thread(new ThreadStart(IHMStart)); //Obligatoire pour utilisé les boites de dialogue tel que OpenFile dans un autre thread IHM.SetApartmentState(ApartmentState.STA); //Demarrage du thread IHM IHM.Start(); // Pour les test cross-thread Thread.Sleep(5000); this.Invoke(new PresenceSGBD(IHMForm.SetPresenceSGBD), true); } private static void IHMStart() { IHMForm.ShowDialog(); }
Voila, donc la partie label de lB_InfoVersSGBD se modifie bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void SetPresenceSGBD(bool SGBD) { if (SGBD) { lB_InfoVersSGBD.Text = "SGBD OK"; //gB_FichierSGBD.Visible = true; } else lB_InfoVersSGBD.Text = 'SGBD NOK"; }
mais si je metil me plante au moment ou il arrive dessus. D'ailleurs le commentaire d'erreur apparait pas à cet endroit, mais sur "IHMForm.ShowDialog();" du thread principal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gB_FichierSGBD.Visible = true;
Une idée pour m'aider?
Partager