Bonjour,
J'ai un problème lorsque j'essaie d'afficher des données provenant d'une thread dans un Form. J'ai conçu ce petit prog. afin d'essayer de comprendre ce qui ce passe, car j'ai ce problème dans un plus gros programme. Or j'essaie d'afficher des données à partir d'une thread et de la form. J'ai essayé plusieur chose les lock, semaphore etc... , mais le problème est que je ne peux pas arrêter mon prog principal. de plus, les locks, ne fonctionnait pas bien.
Avec ce code j'ai deux problèmes, le premier est un message d'erreur qui indique "Le canevas ne permet pas de dessiner." et le deuxième problème que je rencontre est que dans le coin supérieur de mon écran, pas de ma form, de mon écran, il y a du data qui s'affiche la
En passant j'utilise la version 5 et 2006 de bcb, et dans les deux versions j'ai le même problèmes.
Voici le code de la thread:
Et voici le code du programme principale :
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 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" #pragma package(smart_init) //--------------------------------------------------------------------------- __fastcall test::test(bool CreateSuspended) : TThread(CreateSuspended){} //--------------------------------------------------------------------------- void __fastcall test::Execute() { unsigned char i = 255; while (1){ Sleep(50); Form1->Affichage(i--); } }
Merci d'avance
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 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; test *threadtest; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {} //--------------------------------------------------------------------------- // l'interval du timer est de 50 Ms void __fastcall TForm1::Timer1Timer(TObject *Sender) { static unsigned char i = 0; Label1->Caption = i++; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { threadtest = new test(false); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { threadtest->Suspend(); delete threadtest; } //--------------------------------------------------------------------------- void TForm1::Affichage(int i) { Label2->Caption = i; }
Partager