Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wenn 2 Pingthreads falsche Rückgaben (https://www.delphipraxis.net/144594-wenn-2-pingthreads-falsche-rueckgaben.html)

Jackie1983 11. Dez 2009 16:55


Wenn 2 Pingthreads falsche Rückgaben
 
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ß

Bernhard Geyer 11. Dez 2009 16:57

Re: Wenn 2 Pingthreads falsche Rückgaben
 
Und wo wird deine Instanz von TReplayKnecht erzeugt?

Jackie1983 12. Dez 2009 06:00

Re: Wenn 2 Pingthreads falsche Rückgaben
 
gar nicht.
:roll: ok habe den "fehler"
gPaketeEmpfangen <- das g steht bei mir für global :D
Ist klar wenn 2 Threads auf die gleiche var zugreifen das da nur mist raus kommt :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz