Das wäre jetzt ein Beispiel für Event und waitforsingleobject. Allerdings habe ich nicht direkt die
API-Funktionen benutzt, sondern eine Klasse, die genau diese Funktionen kapselt/benutzt.
Der Thread würde von Button1 gestartet. aber er läuft erst weiter, wenn Button2 gedrückt wurde.
Delphi-Quellcode:
uses ...,syncobjs;
type TmyThread=class(TThread)
public
protected
procedure execute; override;
end;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
event:TEvent;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TmyThread.execute;
var event:TEvent;
begin
event:=TEvent.Create(nil,true,false,'myEvent'); //Zugriff aus dasselbe Event
event.waitfor(infinite);
//mach etwas
event.free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var thread:TmyThread;
begin
label1.Caption:='warte';
event:=TEvent.Create(nil,true,false,'myEvent'); //Event anlegen (mit Namen)
with Tmythread.Create(true) do //Thread starten
begin
FreeOnTerminate:=true;
resume;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
event.SetEvent;
event.Free;
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.