Ping asynchron ausführen

05/08/2009 - 08:39 von Maximilian Tescher | Report spam
Hallo zusammen,

mittlerweile schaue ich erst mal auf der super Seite von Peter nach
(www.gssg.de) ob dort nicht schon etwas ist was meinem Problem nahe
kommt, und siehe da, ich bin fündig geworden :-)))

Das heisst aber nicht das es mein Problem löst bzw ich kann die
Erkenntniss noch nicht so in meine Idee einbauen.

Ich möchte in einem DataGridView manuell Hostnamen oder IP-Adressen
eintragen und diese Adressen dann per Pink prüfen und in der Spalte
nach der Adresse dann den Status ausgeben.

Wenn ich das einzeln mache, konnte ich die Infos aus Peter's Beispiel
nachbauen und für mich verwenden.

Nun möchte ich am liebsten die komplette Liste asynchron ausführen,
ich weiss aber zum Zeitpunkt der Ausführung nicht wieviel Adressen es
sind.

Kann ich den für jede Zeile einen Ping asynchron absetzen? Ich
verstehe im Moment nicht wie ich das lösen kann damit pro Zeile ein
Ping ausgelöst und das Ergebnis dann pro Zeile wieder eingetragen
werden kann.

Ich kann zwar Zeile für Zeile durchgehen und auf das Ergebnis warten
bevor ich weiter gehe, am liebsten aber wàre es mir wenn meine
Anwendung nicht blockiert ist.

Vor allem wichtig ist, ich muss zu jeder Zeit die Ping's mit einem
Klick auf z.Bsp. einen Stop-Button das ganze abbrechen können.

Wàre Euch dankbar für ein paar Tipps.


Gruss,
Maxi
 

Lesen sie die antworten

#1 Peter Götz
05/08/2009 - 09:25 | Warnen spam
Hallo Maximilian,

mittlerweile schaue ich erst mal auf der super Seite von
Peter nach (www.gssg.de) ob dort nicht schon etwas ist
was meinem Problem nahe kommt, und siehe da, ich bin
fündig geworden :-)))

Das heisst aber nicht das es mein Problem löst bzw ich
kann die Erkenntniss noch nicht so in meine Idee einbauen.

Ich möchte in einem DataGridView manuell Hostnamen oder
IP-Adressen eintragen und diese Adressen dann per Pink



Nicht per "Pink" sondern besser per "Ping".

prüfen und in der Spalte nach der Adresse dann den Status
ausgeben.



Wozu sollte das gut sein?
Was nützt es Dir, wenn ein Rechner auf Deinen Ping
antwortet und einen Moment spàter vom Netz genommen
wird und dann eben nicht mehr erreichbar ist?

Wenn ich das einzeln mache, konnte ich die Infos aus
Peter's Beispiel nachbauen und für mich verwenden.

Nun möchte ich am liebsten die komplette Liste asynchron
ausführen,



"Asynchron" heisst in diesem Fall, dass der Ping in einem
separaten Thread ausgeführt wird. Hast Du in Deinem Grid
z.B. 100 Rechnernamen dann würde das bedeuten, dass
Du 100 Threads starten müsstest, was natürlich keine so
gute Idee wàre.

ich weiss aber zum Zeitpunkt der Ausführung nicht wieviel
Adressen es sind.

Kann ich den für jede Zeile einen Ping asynchron absetzen?



Prinzipiell ja, aber s.oben:

Ich verstehe im Moment nicht wie ich das lösen kann damit
pro Zeile ein Ping ausgelöst und das Ergebnis dann pro
Zeile wieder eingetragen werden kann.



Um wieviele Rechner würde es sich dabei denn maximal
handeln?

Ich kann zwar Zeile für Zeile durchgehen und auf das
Ergebnis warten bevor ich weiter gehe,



Dies würde dann sogar mit einem synchron ausgeführten
Ping gehen, bei dem man evtl. den TimeOut-Wert etwas
herabsetzt.

am liebsten aber wàre es mir wenn meine
Anwendung nicht blockiert ist.



Dazu ist asynchrone Arbeitsweise nötig, wobei Du
aber nicht beliebig viele Pings (Threads) gleichzeitig
am Laufen haben solltest.

Vor allem wichtig ist, ich muss zu jeder Zeit die Ping's
mit einem Klick auf z.Bsp. einen Stop-Button das ganze
abbrechen können.



Da solltest Du Dich erst mal etwas nàher mit dem
Mulitthreading vertraut machen. Auf meiner Internetpràsenz
gibt es einige Beispiele zum Thema Multithreading

www.gssg.de -> Visual Basic -> VB.net
-> Thread Invoke
-> BackGroundWorker-Threading
-> Thread Priority

Wàre Euch dankbar für ein paar Tipps.

Generell aber solltest Du Dein gesamtes Vorhaben mit
den "Pings auf Vorrat" überdenken. Der Ping liefert
lediglich eine Momentaufnahme und die Erreichbarkeit
eines Rechners im Netz kann sich jederzeit àndern.

Was genau willst Du mit dem "Anpingen" der div. Rechner
denn wirklich erreichen?

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen