Bonjour
Voilà le code associé à ce problème :
Merci pour votre aide.
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
51
52
53
54
55 private bool m_bIsThreadRefreshRunning = false; private bool m_bIsApplicationClosing = false; private void FormPrincipal_Load(object sender, System.EventArgs e) { ... ThreadPool.QueueUserWorkItem(new WaitCallback(RefreshModeThread), this); } static void RefreshModeThread(object state) { // Récupération du context FormPrincipal fp = (FormPrincipal)state; // Cette thread démare fp.m_bIsThreadRefreshRunning = true; // Mise à jour de controles visuels while( !fp.m_bIsApplicationClosing ) { // Somme-nous en mode de rafraîssement, si oui alors on met à jour ? if ( fp.m_bIsButtonRefreshMode ) fp.UpdateDisplay(); } // Cette thread sera arrêté après cette ligne fp.m_bIsThreadRefreshRunning = false; } private void FormPrincipal_Closing(object sender, System.ComponentModel.CancelEventArgs e) { // Forcer l'arrêt du thread de rafraichissement m_bIsApplicationClosing = true; // Looper et empêcher une fermeture tant que la thread ne // sera pas arrêter (En mode refresh la thread du haut FREEZE dans la procédure UpdateDisplay() while (m_bIsThreadRefreshRunning) Thread.Sleep(10); } private void UpdateDisplay() { this.m_Txt_Analog_1.Text = "Hello world"; // Cette ligne FREEZE la thread, est-ce que ce serait un problème de CROSS-Thread ? Pourtant j'ai tenté un Invoque mais aucun succès, quelque à une idée ? } private void m_bt_ModeStop_CheckedChanged(object sender, System.EventArgs e) { m_RefreshMode = false; // Stop refresh mode } private void m_bt_ModeRefresh_CheckedChanged(object sender, System.EventArgs e) { m_RefreshMode = true; // Active refresh mode }
Partager