Entwickler-Ecke

Internet / Netzwerk - Indy Ping im Thread


Joda - Do 06.09.07 18:44
Titel: Indy Ping im Thread
Hallo an alle da draußen

ich habe ein kleines Problem mittels der Indy Ping Kompo, und zwar habe ich das eigendliche Pingen in eine
Thread ausgelagert, da mein Programm in einen bestimmten Zeit Intervall alle Rechner im Netzwerk anpingen soll.
Das Pingen funktioniert soweit ganz gut.
Doch wenn ich einen Rechner anpinge der offline ist, geht die Procedure in eine Exception und dadurch friert
mein Programm für ca 1-2 Sekunden ein. habe schon alles versucht, bin langsam am verzweifeln.

Thread Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
type

  TMyPing = class(TThread)
  private
    { Private declarations }
  protected
     procedure Execute; override;
  public
  end;


implementation
procedure TMyPing.Execute;
var
 i: Integer;
begin
 frmNachrichten.IdIcmpClient1.Host := strName;
 for i := 1 to 1 do
 begin
 frmNachrichten.AntiFreeze.;
  try
   frmNachrichten.IdIcmpClient1.Ping;
   frmNachrichten.ListView1.Items.Item[intHostNr].ImageIndex:=1;
  except;
  frmNachrichten.ListView1.Items.Item[intHostNr].ImageIndex:=0;
  end;
  frmNachrichten.AntiFreeze.Process;
 end;



Was mach ich nur verkehrt :roll:

Bin über jeden Tip sehr dankbar

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


Narses - Do 06.09.07 19:13
Titel: Re: Indy Ping im Thread
Moin und :welcome: im Forum!

user profile iconJoda hat folgendes geschrieben:
Was mach ich nur verkehrt

Ziemlich viel... :?

Die VCL ist nicht threadsave, deshalb mußt du auf VCL-Elemente synchronisiert zugreifen. Dazu gibt es die Methode Synchronize(), die du aber nicht verwendest! :idea:

user profile iconJoda hat folgendes geschrieben:
Indy Ping Kompo

Muss es unbedingt Indy sein? :nixweiss: Der Indy-Ping setzt nämlich Admin-Rechte voraus, weil die auf RawSockets aufsetzen.

Wenn es nicht unbedingt Indy sein muss, wäre das hier vielleicht eine Alternative [http://www.delphi-forum.de/topic_53259.html] für dich; da ist die Threadlösung schon integriert. ;)

cu
Narses


Joda - Do 06.09.07 22:56

Hallo Narses

Vielen Dank für deine Unit
ist wirklich sehr sehr gut danke, hab dadurch mein Problem lösen können :zustimm: :dance2:

es muss nun wirklich nicht immer Indy sein :rofl:


Vielen Dank nochmals

Gruss Joda :wave: :wave: :wave:


Narses - Do 06.09.07 23:01

Moin!

user profile iconJoda hat folgendes geschrieben:
Vielen Dank für deine Unit

Bitte. :)

Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? Danke. ;)

cu
Narses


Joda - Fr 07.09.07 11:02

Hallo Narses

klar kein Problem

Danke nochmals :lol: