Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: [Indy 10] IRC-Client in eigenem thread auslagern

  Alt 21. Dez 2010, 23:28
Hi,

die IdIRC Komponente ist eine der wenigen die ich noch nicht benutzt/benötigt habe,
allerdings kenne ich ansonsten recht gut mit den Indy-Komponenten aus.

Dein Gedankengang mit dem Thread ist absolut richtig,
allerdings solltest Du alle Events von TIdIRC(somit auch OnPrivateMessage)
innerhalb des Threads behandeln und NICHT direkt an die Form verweisen.
Für eine Interaktionen zwischen Thread(s) und VCL-Komponenten(auch Forms)
ist die Syncronisation der Interaktion dringend zu Verwenden!

Verwende Deinen Source aus dem ersten Posting,
verweise "OnPrivateMessage" auf eine "thread interne" Methode.
Dort verarbeite die "Message" nach belieben, soll allerdings
Interaktion mit der GUI stattfinden(z.B. Anzeige der Nachricht im Memo)
muss das ganze über Thread.Syncronize gemacht werden.

Zu Deiner Frage bezüglich des OnExecute:
Die Procedure die Du definiert hast für OnPrivateMessage wird automatisch aufgerufen,
darum "kümmert" sich IdIrc. Deshalb musst Du, soweit ich das im Moment beurteilen kann,
im Onexecute einfach eine Schleife laufen lassen, solange die IRC Verbindung steht den
hread einfach schlafen legen(z.b. Sleep(25)). Gibt noch andere Möglichkeiten,
aber zum Testen sollte das reichen.

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat