Bonjour,
Actuellement, je cherche à comprendre le fonctionne des threads pour arriver à mon but, qui est la comprehension des sémaphores ainsi que les mutex.
Le hic, c'est que je suis loin d'avoir compris quoi que ce soit je crois
Alors, voilà mon soucis.
Je suis entrain de lire le PDF sur les threads de Laurent Berne et j'en suis à ses début.
Je crée mon thread comme ci dessous :
Puis, l'appel comme ceci :
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 unit Unit2; interface uses Classes,Dialogs; type thread1 = class(TThread) private { Déclarations privées } protected procedure Execute; override; end; implementation { Important : les méthodes et propriétés des objets de la VCL peuvent uniquement être utilisés dans une méthode appelée en utilisant Synchronize, comme : Synchronize(UpdateCaption); où UpdateCaption serait de la forme procedure thread1.UpdateCaption; begin Form1.Caption := 'Mis à jour dans un thread'; end; } { thread1 } procedure thread1.Execute; begin ShowMessage('OK! Thread créé'); end; end.
Le hic, c'est que ma méthode ne fonctionne pas (ShowMessage) alors que la méthode de Laurent Berne (MessageBox) fonctionne ...
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 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,Unit2, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; MonThread:thread1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin MonThread:=thread1.Create(false); end; end.
Quelqu'un peut m'expliquer le pourquoi ?
Merci bien
PS: En fait, le thread me fait des fenêtres non complète ... Rare sont les fois où ça fonctionne correctement...
Partager