Die Klasse
TSleepingThread ist ein besonders fauler Geselle.
Der Thread arbeitet nur, wenn man ihn von Aussen gezielt aufweckt.
Sobald er seine Arbeit getan hat (
procedure DoWork;
) legt er sich wieder schlafen.
Ob der Thread gerade am arbeiten ist lässt sich über das
Propery Busy
abfragen.
Delphi-Quellcode:
TSleepingThread = class(TThread)
private
FEvent : TSimpleEvent;
FBusy : Boolean;
protected
procedure Execute;override;
procedure DoTerminate;override;
procedure DoWork;virtual;abstract;
public
constructor Create(CreateSuspended: Boolean);
destructor Destroy; override;
procedure WakeUp;
property Busy:Boolean read FBusy;
end;
Um die Klasse zu benützen muss man von
TSleepingThread
ableiten und die Methode
DoWork
überschreiben.
Mit Hilfe der Klasse
TSimpleEvent
legt sich der Thread selbst schlafen um dann über die WakeUp Methode aufgeweckt zu werden.
Im Anhang befindet sich ein Demo, das die Arbeitsweise zeigt.