Registriert seit: 16. Mär 2004
2.287 Beiträge
|
Re: TThread.Create erzeugt einen Stack Overflow?
3. Mär 2007, 22:45
Zitat von mr2:
Du solltest FTCP auch irgendwo (am besten im Konstruktor ) erzeugen, wenn es sich dabei um ein Objekt handelt, sonst bekommst Du zwangsläufig eine Zugriffsverletzung.
mr2
*möp*
Delphi-Quellcode:
procedure TChatClient.Connect(Host: String; Port: Integer);
var CT: TConnectThread;
T: Cardinal;
TT: TThread;
begin
if FIdTCP.Connected then Exit;
try
CT:=TConnectThread.Create(True);
CT.FreeOnTerminate:=True;
CT.TCP:=Fidtcp; // <-- !!!
CT.Host:=Host;
CT.Port:=Port;
T:=GetTickCount+5000;
CT.Resume;
while (not CT.Terminated) do
begin
FOnSleep;
if (T-GetTickCount<0) or (Fidtcp.Connected) then Break;
Sleep(50);
end;
CT.Terminate;
if not Fidtcp.Connected then raise EConnectException.Create('');
FListeningThread.Resume;
except
raise EConnectException.Create('');
end;
end;
»Unlösbare Probleme sind in der Regel schwierig...«
|