Einzelnen Beitrag anzeigen

Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Wenn 2 Pingthreads falsche Rückgaben

  Alt 11. Dez 2009, 17:55
Servus,

habe diesen Code
Delphi-Quellcode:
Function PingDeviceByIP(ADeviceIP : string; ATimeOut : integer = 3000;APingCount : integer = 4) : Integer;
var
  IdIcmp : TIdIcmpClient;
  rk : TReplayKnecht;
  i : integer;
begin
  IdIcmp := TIdIcmpClient.Create(nil);
  try
    IdIcmp.Host := ADeviceIP;
    IdIcmp.ReceiveTimeout := ATimeOut;
    IdIcmp.OnReply := rk.IdIcmpReply;
    try
      gPaketeEmpfangen := 0;

      for i:=0 to APingCount-1 do
      begin
        IdIcmp.Ping;
        sleep(10);
      end;
      result := gPaketeEmpfangen;
    except
      result := 0;
      exit;
    end;
    case IdIcmp.ReplyStatus.ReplyStatusType of
      rsErrorUnreachable : result := 0;
      rsTimeOut : result := 0;
    end;
  finally
    FreeAndNil(IdIcmp);
  end;
end;
Wenn ich zwei Threads habe, beide Rufen diese Methode auf, bekomme ich immer 2 als Rückgabewert.
Habe durchzufall auch mal gesehen 5, das kann ja gar nicht sein weil die Methode APingCount immer = 4 ist.

Liegt das am Thread?

gruß
  Mit Zitat antworten Zitat