Indy ICMP Komponente (Threads)
-
Hallo!
Ich hab ein kleines Problem. Ich hab ein kleines Ping-Tool mit dem BCB 6 geschrieben gehabt. Nun hab ich versucht das selbe mit dem BCB 7 umzusetzen. Leider scheint dieser beim Ping (wenn der Host nicht erreichbar ist) einzufrieren bis er das Timeout hat. Ist ziemlich nervig. Beim BCB 6 konnte ich das Problem mit folgeden Befehl umgehen:
Icmp1->Ping();
Application->ProcessMessages();Leider scheint dies beim BCB 7 aber keine Wirkung zu zeigen. Die AntiFreeze Komponente von Indy hat auch nicht geholfen. So ganz hab ich auch noch nicht durchgeblickt wie ich auf die Komponenten zugreife, wenn ich diese in einen anderen Thread auslagere. Wäre super wenn mir jemand ein paar Tips geben könnte. Danke!
gruss
kmb
-
kmb schrieb:
Beim BCB 6 konnte ich das Problem mit folgeden Befehl umgehen:
Icmp1->Ping();
Application->ProcessMessages();Da wurde nichts umgangen. Auch im BCB6 wird bei deinem Beispiel ProcessMessages erst aufgerufen, wenn Ping() inklusive Timeout abgearbeitet wurde.
Zur Thread-Programmierung finden sich im Forum zig ... ähh ... Threads.
-
Stimmt!
Ich hab mir den alten Source nochmal angeguckt und festgestellt, das wenn man eine IP anstatt einen hostame pingt, dann hat man die Probleme nicht. Danke!
gruss
kmb
-
Doch zu früh gefreut. Das Problem bleibt weiterhin bestehen, ist aber anscheinend durch das nicht vorhandensein der Namesnauflösung einwenig beschleunigt worden.
Ich versuche nun die Indy ICMP Komponente auf einen anderen Thread auszulagern. Leider gelingt mir das nicht. Ich bekomme nach dem beenden meines Programms einen haufen Ausnahmefehler woran kann das liegen? Evtl. kann mir ja jemand ein Beispiel-Source posten wie ich eine Komponente in einem anderen Thread erzeuge.PS: Dank diese Dämlichen Spamfilterschutz auf dieser Seite, bekomm ich es seit 30min nicht hin mein Source hier zu posten.
Gruß
kmb
-
Ich habe das Problem jetzt folgendermaßen gelößt. War aber einbisschen Arbeit.
- Indy Komponente komplett rausgeschmissen
- Einen neuen Thread in mein Projekt eingebunden (rechter Mausklick auf Projekt->neu Hinzufügen->Weitere->Thread Object)
- Im neuen Thread Source für die Ping Routine verwendet von ( http://www.bytesandmore.de/rad/ )
- Fertig!
Wenn Interesse besteht kann ich den Source auch noch posten. Leider ist ja diese Spam-Erkenung hier im Forum einbisschen lästig. Ich trau mich schon gar nicht mehr Source zu posten.
Gruß
KMB