Ir para conteúdo
Fórum Script Brasil
  • 0

Usando Trheads


Mauro Jr

Pergunta

Olá,

Estou desenvolvendo um programinha que fica monitorando enderços IP. Faço isso através de ping. O problema é que quando dou um ping e a resposta demora, o sistema fica "parado" até acabar aquele processo. Daí não consigo acessar as opções de configuração, ou fechar o programa, pois o mesmo está fazendo o ping e neste momento o programa fica "congelado".

Pensei em utilizar Multi Thread, para que os processos trabalhem paralelamente. Mas como faço isso? Devo colocar um thread para controlar o ping e outro que cuida do resto da aplicação? Em que momento devo executar os threads?

Agradeço a atenção,

Mauro Jr

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Utilizo o componente IdIcmpClient ---- IdIcmpClientNetMon.Ping;

//* Evento OnTimer do Timer

procedure TFormNetMonitor.TimerNetMonitorTimer(Sender: TObject);

begin

ClientDataSet.First;

While not ClientDataSetAddressToTest.Eof do

begin

IdIcmpClient.OnReply := IdIcmpClientReply;

IdIcmpClient.ReceiveTimeout := 2;

IdIcmpClient.Host := ClientDataSet.AsString;

IdIcmpClient.Ping;

.

.

.

ClientDataSet.Next;

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

Defina uma classe que descenda de TThread:

type TPingThread = Class(TThread)
       procedure   Execute; override;
       constructor Create;
end;
Depois implemente os dois métodos:
constructor TPingThread.Create;
begin
  inherited Create(true); // cria suspensa
  FreeOnTerminate := false; // deixa você liberar o objeto
end;

procedure TPingThread.Execute;
begin
  While not Terminated do
  begin
// Aqui você coloca o código do evento timer
// Não deixe sair deste While, executando Suspend após sua tabela chegar ao fim
end;
end;
Defina uma variável p/ a Thread:
var PT:TPingThread;
No onCreate do Form você instancia:
PT := TPingThread.Create;
No onTimer você ativa:
PT.Resume;
No onDestroy você libera:
PT.Free;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...