![]() |
Wenn 2 Pingthreads falsche Rückgaben
Servus,
habe diesen Code
Delphi-Quellcode:
Wenn ich zwei Threads habe, beide Rufen diese Methode auf, bekomme ich immer 2 als Rückgabewert.
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; Habe durchzufall auch mal gesehen 5, das kann ja gar nicht sein weil die Methode APingCount immer = 4 ist. Liegt das am Thread? gruß |
Re: Wenn 2 Pingthreads falsche Rückgaben
Und wo wird deine Instanz von TReplayKnecht erzeugt?
|
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 15:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz