Einzelnen Beitrag anzeigen

Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#5

Re: 100 Server parallel überprüfen, ob Sie online sind?

  Alt 12. Mai 2010, 23:42
Hm. Ein Beispiel kenne ich jetzt nicht, aber das müsste schon helfen.
Im Grunde ist es ganz einfach. Du leitest dir eine eigene Klasse von TThread ab und überschreibst dabei die Execute-Methode. In dieser wird dein eigener Code ausgeführt, dort kannst du dann z.B. den Ping absetzen. Erstellen tust du den Thread dann z.B. so:

Delphi-Quellcode:
var
  T: TMeinThread;
begin
  T := TMeinThread.Create(True); //Thread angehalten erstellen
  T.FreeOnTerminate := True; //Freigeben wenn Execute-Methode fertig
  T.Resume; //Thread starten
end;
Was meiner Meinung nach manchmal etwas nervig, kompliziert oder fehleranfällig ist, ist das Weiterleiten von Informationen des Threads an den Main-Thread, bzw. VCL-Sachen/Fenster. Behalte dabei immer im Hinterkopf, dass du aus der Execute-Methode, bzw. Methoden, die von Execute aus aufgerufen werden, nichts mit der VCL machen darfst. D.h. wenn dein Thread beispielsweise den Text eines Labels ändern will oder in ein TListView ein TListItem hinzufügen möchte, muss das über die Synchronize()-Methode des Threads oder andere Mechanismen wie SendMessage oder PostMessage passieren. Das gilt auch für hässliche globale/gemeinsame Variablen, sofern die benutzt werden - der Zugriff darauf sollte immer nur von einem Thread aus gleichzeitig erfolgen, also eventuell noch über CriticalSections informieren, das könnte auch hilfreich sein.

Viel Erfolg
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat