Bonjour à tous,
J'ai un soucis avec mon interface graphique (Gtk#) et un thread qui doit mettre à jour des labels.
Pour simplifier : j'ai un thread qui se charge de gérer une liaison série lorsque que l'utilisateur appuie sur un Gtk.Buton, ainsi que de mettre à jour un label pour renseigner l'état de la liaison série.
Voici mon code (version simplifié):
Le problème est que les labels ne se mettent pas à jour tout le temps.
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 t = new System.Threading.Thread(new ThreadStart(thread_Process)); private void Buton_Clik(object sender, System.EventArgs e) { t.Start(); } private void thread_Process() { OpenSerialPort(); Gtk.Application.Invoke(delegate { myLabel.Text = "Port série ouvert"; }); string[] rxdata = new string[]; rxdata = ReadData(); Gtk.Application.Invoke(delegate { myLabel.Text = "Data lues"; labelVal1.Text = rxdata[0]; labelVal2.Text = rxdata[1]; }); CloseSerialPort(); Gtk.Application.Invoke(delegate { myLabel.Text = "Port série fermé"; }); }
De plus l'éxécution du code est assez bizard : le port série est fermé avant même que les labels LabelVal1 et LabelVal2 soient mis à jour (je croyais être en synchrone avec Invoke()!). Et le temps de mise à jour de ces Labels (quand ils sont mis à jour bien sur!!!!! ) est trés long!
Je ne comprends pas pourquoi...
J'ai pourtant repris l'exemple de la mono doc
Merci d'avance
Partager