System.Win.ScktComp.TServerClientThread.ClientExecute
Delphi
procedure ClientExecute; virtual;
C++
virtual void __fastcall ClientExecute();
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
procedure function |
protected | System.Win.ScktComp.pas System.Win.ScktComp.hpp |
System.Win.ScktComp | TServerClientThread |
Beschreibung
Simuliert OnClientRead- und OnClientWrite-Ereignisse für den zugehörigen Server-Socket.
TServerClientThread ruft ClientExecute in der Methode Execute auf. ClientExecute überprüft, ob lesbare Informationen in der zugehörigen Socket-Verbindung vorhanden sind. Falls dies zutrifft, simuliert ClientExecute ein OnClientRead-Ereignis auf dem zugehörigen Server-Socket. Wenn keine Informationen vom Client vorhanden sind, simuliert ClientExecute ein OnClientWrite-Ereignis.
Da der Server-Socket, der diese Ereignisse erhält, für den Thread nicht lokal ist, werden die Ereignisse im Haupt-VCL-Thread mit der Methode Synchronize ausgelöst. Wenn der Server-Socket viele Cleint-Verbindungen unterhält, ist diese Methode eventuell zu langsam, weil jeder Thread so lange warten muss, bis die Lese- und Schreibvorgänge der anderen Threads abgeschlossen sind. Wenn ein Server-Socket viele Client-Verbindungsanforderungen erhält, sollten Sie ClientExecute überschreiben, um das Lesen und Schreiben über eine thread-lokale Instanz von TWinSocketStream zu verwalten. In der Methode ClientExecute sollten Sie dabei regelmäßig die Eigenschaft Terminated überprüfen.
Anmerkung: Verwenden Sie die Eigenschaften und Methoden von globalen Objekten nicht direkt in der Methode ClientExecute. Übernehmen Sie Objekte, die nicht thread-lokal sind, in eine separate Prozedur und rufen Sie diese Prozedur auf, indem Sie sie als Parameter an die Methode Synchronize übergeben.