Ver Mensaje Individual
  #3  
Antiguo 13-04-2009
zajoma zajoma is offline
Miembro
 
Registrado: feb 2006
Posts: 32
Reputación: 0
zajoma Va por buen camino
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.
Responder Con Cita