inetwa so baue ich meine Threads auf:
Delphi-Quellcode:
type
TMyThread =
class(TThread)
private
FEvents:
array[0..1]
of THandle;
function GetEvent(
Index: Integer): THandle;
// Result := FEvent[Index];
protected
procedure Execute;
override;
public
constructor Create(..params);
destructor Destroy;
override;
property EventTerminate: THandle
index 0
read GetEvent;
property EventWorking: THandle
index 1
read GetEvent;
end;
procedure TMyThread.Execute;
begin
try
while not Terminated
do
case WaitForMultipleObjects(@FEvents, 2, .....)
of
WAIT_OBJECT_0 +0:
Break;
WAIT_OBJECT_0 +1:
// ... mache sonstwas;
else
raise Exception.Create('
ungültiges Resultat in Wait');
end;
except
// ...alle Exceptions hier behandeln
end;
end;
Falls ich mehrere Events benötige dann baue ich FEvents[] als privates Feld der TThread Klasse und greife per indizierten Properties auf dieses Array zu. Das ist im Grunde der häufigste Fall der zutrift da man am besten mit Threads und Eventorientierten Funktionen arbeiten sollte, zb. Kommunikation per
COM/Bluetooth/WinSock usw.
Gruß Hagen