Thema: Delphi Threadsynchronisation

Einzelnen Beitrag anzeigen

StanY

Registriert seit: 6. Aug 2004
145 Beiträge
 
#1

Threadsynchronisation

  Alt 13. Nov 2004, 15:16
Ich habe ein Problem mit der Synchronisation bei meinen Threads.

Ich habe ein Socket (TIdTCPClient) und dazu einen Thread, welcher ReadLn aufruft:

Delphi-Quellcode:
procedure TMyThread.Execute();
var
  Msg: String;
begin
  while Connection[SockId].Connected = true do begin
    Msg := Connection[SockId].ReadLn;
    WriteLn(Msg);
  end;
end;
Nun habe ich beim Beenden das Problem, dass ich bei dieser Zeile:
WriteLn(Msg); Einen Fehler bekomme, weil Connection[SockId] nicht 'connected' ist.

Lösen wollte ich das Problem so, dass ich beim Beenden folgendes Aufrufe:

Delphi-Quellcode:
  //erst die Threads beenden, damit keine Fehler auftreten
  for i := 0 to High(Connection) do begin
    Connection[i].Thread.Terminate;
  end;
und ein Stück code weiter:

Delphi-Quellcode:
  for i := 0 to High(Connection) do begin
    Connection[i].Disconnect;
    Connection[i].Free;
  end;
Allerdings bekomme ich denselben Fehler \:

Wer weiß Rat? (:
  Mit Zitat antworten Zitat