Mon grand soucis, les threads je découvre un peu sur le tas et j'ai un peu de mal je vous avoue je vous expose le soucis :
Donc cette classe un thread qui en fait lance un nouveau 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
28
29
30
31
32
33
34
35
36
37
38
39
40 public partial class Reglages : UserControl { private int tailleDispo; private bool depassement; private Fenetre fenetre; public Reglages(Fenetre a) { InitializeComponent(); fenetre = a; tailleDispo = fenetre.getLayout().Height; depassement = false; } private void bouton_Click(object sender, EventArgs e) { ThreadPool.QueueUserWorkItem(new WaitCallback(lanceProprietes)); } private void lanceProprietes(object sender) { Application.EnableVisualStyles(); Application.Run(new Proprietes(this)); } public void setProprietes(string[] monde, bool mondeCheck) { if (mondeCheck) { if (tailleDispo - 150 > 0 && depassement == false) { fenetre.getLayout().Controls.Add(new RSSAffichage(monde[0], monde[1], monde[2])); tailleDispo = tailleDispo - 150; } else depassement = true; } } }
Le soucis se présente au niveau de la communication entre proprietes et reglages je pensai que la méthode Invoke() me permettait de faire appel au thread père.
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
41
42
43
44
45
46
47
48
49
50 public partial class Proprietes : Form { private String[] monde; private bool mondeCheck; private Reglages reglages; public Proprietes(Reglages a) { InitializeComponent(); reglages = a; monde = new String[3]; } private void checkMonde_CheckedChanged(object sender, EventArgs e) { if (checkMonde.Checked) { monde[0] = "http://www.lemonde.fr/rss/une.xml"; monde[1] = "lemonde"; monde[2] = "http://www.lemonde.fr/"; mondeCheck = true; } else { monde[0] = ""; monde[1] = ""; monde[2] = ""; mondeCheck = false; } } private void boutonOk_Click(object sender, EventArgs e) { diffuseProprietes(); } private void diffuseProprietes() { if (this.InvokeRequired) { this.Invoke(new Action(diffuseProprietes)); } else { reglages.setProprietes(monde, mondeCheck); } } }
Je suis un peu perdu dans les méthodes comment établir la communication entre mon form contenu dans un thread et une méthode de la classe reglages contenu dans le thread père en lui fournissant des paramètres contenu dans mon form.
Merci d'avance
Partager