55 lines
858 B
Plaintext
55 lines
858 B
Plaintext
program Events;
|
|
|
|
{$APPTYPE CONSOLE}
|
|
|
|
uses
|
|
SysUtils, Classes, Windows;
|
|
|
|
type
|
|
TWaitThread = class(TThread)
|
|
private
|
|
FEvent: THandle;
|
|
public
|
|
procedure Sync;
|
|
procedure Execute; override;
|
|
constructor Create(const aEvent: THandle); reintroduce;
|
|
end;
|
|
|
|
{ TWaitThread }
|
|
|
|
constructor TWaitThread.Create(const aEvent: THandle);
|
|
begin
|
|
inherited Create(False);
|
|
FEvent := aEvent;
|
|
end;
|
|
|
|
procedure TWaitThread.Execute;
|
|
var
|
|
res: Cardinal;
|
|
begin
|
|
res := WaitForSingleObject(FEvent, INFINITE);
|
|
if res = 0 then
|
|
Synchronize(Sync);
|
|
end;
|
|
|
|
procedure TWaitThread.Sync;
|
|
begin
|
|
Writeln(DateTimeToStr(Now));
|
|
end;
|
|
|
|
var
|
|
event: THandle;
|
|
|
|
begin
|
|
Writeln(DateTimeToStr(Now));
|
|
event := CreateEvent(nil, False, False, 'Event');
|
|
with TWaitThread.Create(event) do
|
|
try
|
|
Sleep(1000);
|
|
SetEvent(event)
|
|
finally
|
|
Free;
|
|
end;
|
|
Readln;
|
|
end.
|