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