Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Indy10 IdTCPServer Problem

  Alt 9. Nov 2008, 00:54
Die VCL ist nicht Threadsicher, benutze deshalb Kritische Abschnitte.

Delphi-Quellcode:
uses ..., SyncObjs;

type
  :
  private
    { Private-Deklarationen }
    FCriticalSection:TCriticalSection;
  :
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  FCriticalSection:=TCriticalSection.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FCriticalSection.free;
end;

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
:
begin
  :
  FCriticalSection.Enter;
  try
    ListView1.Clear;
    List := IdTCPServer1.Contexts.LockList;
    for i := 0 to List.Count - 1 do begin
      TidContext(List.Items[i]).Connection.IOHandler.WriteLn(text);
      with Listview1.Items.Add do
        caption := TIdContext(List.Items[i]).Connection.Socket.Binding.PeerIP;
    end;
    IdTCPServer1.Contexts.UnlockList;
  finally
    FCriticalSection.Leave;
  end;
end;
  Mit Zitat antworten Zitat