Ir al contenido


Foto

Hilo de ejecucion


  • Por favor identifícate para responder
1 respuesta en este tema

#1 luis_chendo

luis_chendo

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 17 julio 2013 - 01:51

Hola a todos, muy buen dia.
he desarrollado una pequeña aplicacion que envia pings para verificar si estan modems en linea.
El problema es que al hacer los pings y y evaluar su estado la aplicacion se congela hasta que termina el ciclo.
Investigué un poco y lei algo de los hilos de ejecución pero no entiendo muy bien.
Espero me ayuden a incluir esta parte del codigo dentro de un hilo para que al menos la ventana se pueda minimizar o cerrar y no se quede "colgada". De antemano muchas gracias.
PD. utilizo una conexion a MySQL y objetos creados en tiempo de ejecucion. El bloque siguiente solo los edita de acuerdo de los pings respondidos.


delphi
  1. For indice2:=1  to (indice) do
  2. begin
  3. IdIcmpClient1.Host:='';
  4. dyndns:='';
  5. contadorping:=0;
  6. estatus:='';
  7. ids:=InttoStr(Datamodule5.ADOQreca.FieldValues['idreca']);
  8. IdIcmpClient1.Host:=Datamodule5.ADOQreca.FieldValues['dyndns'];
  9. dyndns:=Datamodule5.ADOQreca.FieldValues['dyndns'];
  10. nom_reca:=Datamodule5.ADOQreca.FieldValues['nom_reca'];
  11.   //Inicio de pings
  12.   For i:=0 to 9 do
  13. begin
  14. IdIcmpClient1.Ping;
  15. if IdIcmpClient1.ReplyStatus.BytesReceived = 0 then
  16. begin
  17. end
  18. else
  19. begin
  20.   contadorping:=contadorping+1;
  21. end;
  22. end;
  23.   //Se editan las shapes y etiquetas con el estado
  24.     if contadorping = 0 then
  25.     begin
  26.     Tlabel(listadelabels2[indice2-1]).Caption:=IdIcmpClient1.ReplyStatus.FromIpAddress+#13+'Desconectado'+#13+'Pings '+IntToStr(contadorping);
  27.     estatus:='Desconectado';
  28.     end;
  29.     if (contadorping>=1) AND (contadorping<=4) then
  30.     begin
  31.       Tlabel(listadelabels2[indice2-1]).Caption :=IdIcmpClient1.ReplyStatus.FromIpAddress+#13+'Alerta'+#13+'Pings '+IntToStr(contadorping);
  32.       estatus:='Alerta';
  33.     end;
  34.     if (contadorping>=5) And (contadorping<=7) then
  35.     begin
  36.       Tlabel(listadelabels2[indice2-1]).Caption :=IdIcmpClient1.ReplyStatus.FromIpAddress+#13+'Verificar'+#13+'Pings '+IntToStr(contadorping);
  37.       estatus:='Verificar';
  38.     end;
  39.     if contadorping>=8 then
  40.     begin
  41.     Tlabel(listadelabels2[indice2-1]).Caption :=IdIcmpClient1.ReplyStatus.FromIpAddress+#13+'Conectado'+#13+'Pings '+IntToStr(contadorping);
  42.     estatus:='Conectado';
  43.     end;
  44.  
  45.     if contadorping = 0 then
  46.     begin
  47.       Tshape(listadeshapes[indice2-1]).Brush.Color:=clRed;
  48.     end;
  49.     if (contadorping>=1) AND (contadorping<=4) then
  50.     begin
  51.       Tshape(listadeshapes[indice2-1]).Brush.Color:=$001370D7;
  52.     end;
  53.     if (contadorping>=5) And (contadorping<=7) then
  54.     begin
  55.       Tshape(listadeshapes[indice2-1]).Brush.Color:=clyellow;
  56.     end;
  57.     if contadorping>=8 then
  58.     begin
  59.       Tshape(listadeshapes[indice2-1]).Brush.Color:=clLime;
  60.     end;
  61.   CreateGUID(G);
  62.   idhexa:=GUIDToString(G);
  63.   Delete( idhexa,1 ,1  );
  64.   Delete( idhexa, 37, 1 );
  65.   DataModule5.ADOTconteo.Active:=False;
  66.   DataModule5.ADOTconteo.Active:=True;
  67.   DataModule5.ADOTconteo.Open;
  68.   DataModule5.ADOTconteo.Insert;
  69.   DataModule5.ADOTconteo.FieldByName('idconteo').AsString:=idhexa;
  70.   DataModule5.ADOTconteo.FieldByName('nom_reca').AsString:=nom_reca;
  71.   DataModule5.ADOTconteo.FieldByName('fecha_hora').AsDateTime:=now();
  72.   DataModule5.ADOTconteo.FieldByName('pings').AsString:=InttoSTR(contadorping);
  73.   DataModule5.ADOTconteo.FieldByName('status').AsString:=estatus;
  74.   DataModule5.ADOTconteo.FieldByName('dyndns').AsString:=dyndns;
  75.   DataModule5.ADOTconteo.FieldByName('ip').AsString:=IdIcmpClient1.ReplyStatus.FromIpAddress;
  76.   DataModule5.ADOTconteo.FieldByName('emisora').AsString:=GetPC_Name();
  77.   DataModule5.ADOTconteo.Post;
  78.   {if contadorping=0 then
  79.   begin
  80.     Showmessage('No hay conexión con: '+#13+nom_reca+#13+dyndns+DateTimeToStr(now));
  81.   end;                      }
  82.   Datamodule5.ADOQreca.Next;
  83.   dyndns:='';
  84.   estatus:='';
  85.   contadorping:=0;


  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 17 julio 2013 - 02:23

Saludos.

Algunos enlaces:
Info1
Info2
Info3
  • 0




IP.Board spam blocked by CleanTalk.