IdTCPClient lesen in Thread



  • Hallo zusammen
    Ich benutze für mein Applikation die IdTCPClient-Komponente.

    Das Lesen habe ich über einen Thread gelöst.

    void __fastcall TForm1::IdTCPClient1Connected(TObject *Sender)
    {
       ReadThread = new TTCPRead(false,this);
    }
    
    void __fastcall TForm1::IdTCPClient1Disconnected(TObject *Sender)
    {
          if(ReadThread)
             ReadThread->Terminate();
    }
    

    im Thread lese ich so die Daten aus:

    void __fastcall TTCPRead::Execute()
    {     
       FreeOnTerminate = true;
       unsigned char Byte;
       while(!Terminated)
       {      
          StreamPack = new TStringStream(MainForm->IdTCPClient1->CurrentReadBuffer());
    
          ....
          ....
    
          Synchronize(ReadPacket);
          delete StreamPack;
       }
    }
    

    Jetzt tritt bei jedem Disconnect ein EIdSocketError-Exception auf(Socket-Operation auf Nicht-Socket).
    Wenn ich das richtige verstehe liegts daran dass

    StreamPack = new TStringStream(MainForm->IdTCPClient1->CurrentReadBuffer());
    

    noch auf die Daten wartet.

    gibt es Möglichkeiten das zu beheben?

    schonmal danke im voraus für jegliche tipps

    BigNeal :xmas2:


Anmelden zum Antworten