He creado un hilo elemental de la forma
Código:
uses ... , SyncObjs, ...;
type
TMiHilo = class( TThread )
private
FinternalData:TStringList;
FEvent:TEvent;
public
constructor Create( CreateSuspended:boolean );
function LeerCadena( timeout:integer ):string;
procedure Execute(); override;
property Event:TEvent read FEvent;
end;
constructor TMiHilo.Create( CreateSuspended:boolean );
begin
FInternalData := TStringList.Create();
FEvent := TEvent.Create( nil, false, false, '' );
end;
function TMiHilo.LeerCadena( timeout:integer ):string;
var
res:TWaitResult;
begin
if ( timeout = 0 ) then res := FEvent.WaitFor( INFINITE )
else res := FEvent.WaitFor( timeout );
if ( res = wrSignaled ) then begin
result := FInternalData[0];
FInternalData.Delete(0);
if FInternalData.Count > 0 then FEvent.SetEvent;
end else
if ( res = wrTimeout ) then result := 'timeout' else result := 'error';
end;
procedure TMiHilo.Execute();
begin
while not Self.Terminated do begin
ReadDataFromFile();
FEvent.SetEvent;
Sleep(1000);
end;
end;
Un saludo y gracias por el interés.