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

线程中的 TClientSocket运行的机制?解决办法

2012-02-09 
线程中的 TClientSocket运行的机制???从TThread下继承了一个TFZThead.在TFZThead中动态产生了一个TClientS

线程中的 TClientSocket运行的机制???
从TThread下继承了一个   TFZThead.
在TFZThead中动态产生了一个TClientSocket对象。
在TClientSocket对象的OnRead事件中   写了   接收数据的代码。
问题是   我在TFZThead的Excute()函数中,就写了如下语句:
    while   (true)
    {
          Sleep(60000);

    }
但是   还能一直收到   数据。
线程在     睡眠的   时候不是不   参与调度吗,怎么还会执行呢(指收到了数据)?
那么   还存在一种情况,就是TClientSocket对象的运行和   这个线程根本   就没有关系,它   是在   主线程中   执行的???
请   高手   解释!!!

[解决办法]
TClientSocket对象的OnRead是事件,接收数据不是在TFZThead的线程里,你的线程只负责产生它,接收数据是TClientSocket对象的OnRead事件中完成,与TFZThead无关
[解决办法]
建议使用 idtcpserver和idtcpclient
BCB6需要重新安装较新版本indy
[解决办法]
如果你是在线程的构造函数中创建TClientSocket,那么TClientSocket还是属于主线程,不属于这个线程。
如果你是在线程的Execute()中创建TClientSocket,那么TClientSocket属于这个线程,但是此时你无法使用OnRead来读取,必须将TClientSocket的ClientType设为ctBlocking

热点排行