首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么编写idtcpclient接收数据的线程

2012-03-24 
如何编写idtcpclient接收数据的线程第一次写线程,查了些资料但是写出来总是报错。头文件C/C++ codeclass TC

如何编写idtcpclient接收数据的线程
第一次写线程,查了些资料但是写出来总是报错。
头文件

C/C++ code
class TClientThread : public TThread{  private:  void __fastcall   Execute();  public:  __fastcall  TClientThread(void);};

cpp
C/C++ code
TClientThread *ClientThread;//---------------------------------------__fastcall TClientThread::TClientThread(void) : TThread(true){  FreeOnTerminate = true;  Resume();}//---------------------------------------void __fastcall TClientThread::Execute(){  while(!Terminated)  {    if(!MainForm->IdTCPClient1->Connected())    {      Terminate();    }    else    {      try      {        AnsiString receiveMessage = MainForm->IdTCPClient1->ReadLn(); //读取数据然后在reditMessage显示        MainForm->reditMessage->Lines->Add(receiveMessage);      }      catch(...)      {        MainForm->reditMessage->Lines->Add("Err");      }    }  }}//-------------------------------------void __fastcall TMainForm::IdTCPClient1Connected(TObject *Sender) {  ClientThread = new TClientThread;     //连接后创建线程}//-------------------------------------void __fastcall TMainForm::IdTCPClient1Disconnected(TObject *Sender){    ClientThread-> Terminate();          //断开后释放线程  IdTCPClient1->Disconnect();}//---------------------------------------


[解决办法]
在线程中操作主界面的控件,需要用sync.. 包起来,你创建线程以后,上面一大段注释就是说这个的

你的这些都有问题

AnsiString receiveMessage = MainForm->IdTCPClient1->ReadLn(); //读取数据然后在reditMessage显示
MainForm->reditMessage->Lines->Add(receiveMessage);
}
catch(...)
{
MainForm->reditMessage->Lines->Add("Err");


[解决办法]
探讨
引用:
在线程中操作主界面的控件,需要用sync.. 包起来,你创建线程以后,上面一大段注释就是说这个的

你的这些都有问题

AnsiString receiveMessage = MainForm->IdTCPClient1->ReadLn(); //读取数据然后在reditMessage显示
MainForm->reditMessage->Line……

热点排行