Problème d'utilisation du ShowMessage dans un Thread
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 :aie:
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 :
Code:
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. |
Puis, l'appel comme ceci :
Code:
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. |
Le hic, c'est que ma méthode ne fonctionne pas (ShowMessage) alors que la méthode de Laurent Berne (MessageBox) fonctionne ...
Quelqu'un peut m'expliquer le pourquoi ?
Merci bien :D
PS: En fait, le thread me fait des fenêtres non complète ... Rare sont les fois où ça fonctionne correctement...