Einzelnen Beitrag anzeigen

Chendrak

Registriert seit: 16. Okt 2003
2 Beiträge
 
#1

Problem mit ClientSocket + MultiThreading

  Alt 9. Jan 2004, 11:44
Hi DPler
Ich bin gerade dabei einen Serverchecker zu programmieren. Es gibt einmal die Möglichkeit, den entsprechenden Server zu pingen (funktioniert auch wunderbar) und es soll die Möglichkeit geben, zu einem bestimmten Port auf diesem Server zu verbinden. Das ganze läuft über Threads und die Komponenten werden dynamisch durch die Threads erstellt.
Nun zu meinem Problem.
Die Komponenten zur Direktverbindung zum Server (TClientSocket) werden ordnungsgemäß erstellt und die Werte und Ereignisse zugewiesen.
Code:
...
else
   begin
     ConnCompo := TClientSocket.Create(Form1);
     ConnCompo.Name := 'MyConnCompo'+IntToStr(ThreadId);
     ConnCompo.Host := PingHost;
     ConnCompo.Port := CPort;
     ConnCompo.OnConnect := ConnFunc;
     ConnCompo.OnConnecting := Connecting;
     ConnCompo.OnRead := ConnRead;
     ConnCompo.OnError := ConnError;
     ConnCompo.ClientType := ctNonBlocking;
     //Timer zum automatischen Disconnecten nach 5 Sekunden (falls Verbindung zustande kam und ggf. Daten gelesen wurden)
     DiscTimer := TTimer.Create(Form1);
     DiscTimer.Name := 'DiscTimer'+IntToStr(ThreadId);
     DiscTimer.Interval := 5000;
     DiscTimer.Enabled := False;
     DiscTimer.OnTimer := TimerFunc;
     Connected := False;
   end;
Wenn ich dann später ConnCompo.Active auf True setze, erstellt diese sich einen eigenen Thread, welcher aber entweder irgendwie Suspended ist oder aber auf meine Ereignisse nicht reagiert...
Bin gerade am verzweifeln, da ich irgendwie keinen Ansatzpunkt zum debuggen finde

Hat da jemand Erfahrung mit bzw. hatte schon mal das gleiche Problem und konnte es lösen ?

Chendrak
  Mit Zitat antworten Zitat