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ß