Atualização da informação q carrega uma Thread

Delphi

23/12/2013

Pessoal, necessito de algumas dicas de vcs, pois estou apanhando neste dados abaixo.

- Tenho um Data Modulo q cria uma classe qualquer chamada por exemplo TThreadCarregarDados.
- Ao criar esta classe, ela cria uma respectiva thread chamada neste exemplo de TThreadNova;
- No Execute do TThreadNova eu tenho um WAITFOR q será realizado de X em X tempo ao atualizar um contador por exemplo;
- Mas eu passo de parâmetro o respectivo código de busca, q na primeira instancia está em branco pois não tem nenhuma informação;
- Minha dúvida é em q momento atualizo esta informação do parâmetro "pCodigo", sendo q criei a mesma na classe anterior e no primeiro momento já foi criado em branco?

Não sei se ficou confuso para vcs, mas por está no problema muito tempo, já não estou vendo aonde está errado.

Agradeço a atenção de vcs


unit DataModuloPrincipal;


type
  TThreadCarregarDados = class (TThread)
  private
  protected
    procedure Execute; override;
  public
  end;

procedure TThreadCarregarDados.Execute;
var
  lBuscaQualquer : TtrBusca;
begin
  // bla bla 

  ThreadBuscaQualquer := TThreadBuscaXXX.Create;         
  try            
    ThreadBuscaQualquer.Codigo = ''123'';
    ThreadBuscaQualquer.Descricao = ''Descricao Qualquer'';
 
    // bla bla
  finally
     ThreadBuscaQualquer.Free;
  end;

end; 



unit uBuscas;

  TThreadNova = class(TThread)
  private
  protected
    procedure Execute; override;
  public
    FCodigo : string;
    FEvento : TEvent;
    constructor Create(CreateSuspended : Boolean; pCodigo: string);
    destructor Destroy; override;
    procedure Terminate;
    property Evento : TEvent read FEvento;
  end;


  TtrBusca = class
  private
  public
    Codigo : string;
    Descricao : String;
    ListaDeBuscaCampanha : TThreadNova;
    
    constructor Create;
    destructor Destroy; override;
  end;


constructor TtrBusca.Create;
begin
  // bla bla
  // bla bla   
  
  // Neste momento o código está vazio e cria minha respectiva Thread nova
  ListaDeBusca  := TThreadNova.Create(False, Codigo);
  
end;


// Thread
constructor TThreadNova.Create(CreateSuspended : Boolean; pCodigo : string);
begin
  inherited Create(CreateSuspended);
  FCodigo :=  pCodigo;
  Priority := tpNormal;
  FreeOnTerminate := True;
  FEvento := TEvent.Create(nil, False, False, '''');
  Resume;
end;



// Execute da Thread Nova 
procedure TThreadNova.Execute;
begin
  
  while not Terminated do
  begin
     FEvento.WaitFor(1000);
      
     qryBusca := ''select count(*) qtd from teste where codigo = '' + pCodigo;
     qryBusca.Open;
     while not qryBusca.EOF do
     begin
     end;
  end;
end;

Alessandro Yamasaki

Alessandro Yamasaki

Curtidas 0
POSTAR