I
ie
Unregistered / Unconfirmed
GUEST, unregistred user!
我建立一个线程,使用ics来接收数据,
procedure Execute;
override;
begin
//....
mWSocket := TWSocket.Create(nil);
mWSocket.ComponentOptions := [wsoNoReceiveLoop];
mWSocket.MultiThreaded := true;
mWSocket.OnDataAvailable := MyWSocketDataAvailable;
//...
//做些连接动作,连接上后,开始接收数据,在MyWSocketDataAvailable(Sender: TObject;
Error: Word);过程中接收数据
while truedo
begin
//....在这里不断循环
application.processmessage;
sleep(2);
if 数据接收完 then
break;
end;
//...
mWSocket.free;
end;
现在问题是,数据接收到一定时候,cpu使用率接近100%(开始cpu使用率很低),我后来发现代码不会在while truedo
中循环了,
但MyWSocketDataAvailable还是不断在接收数据。为什么?我这样写不对吗?请各位高手指点!
procedure Execute;
override;
begin
//....
mWSocket := TWSocket.Create(nil);
mWSocket.ComponentOptions := [wsoNoReceiveLoop];
mWSocket.MultiThreaded := true;
mWSocket.OnDataAvailable := MyWSocketDataAvailable;
//...
//做些连接动作,连接上后,开始接收数据,在MyWSocketDataAvailable(Sender: TObject;
Error: Word);过程中接收数据
while truedo
begin
//....在这里不断循环
application.processmessage;
sleep(2);
if 数据接收完 then
break;
end;
//...
mWSocket.free;
end;
现在问题是,数据接收到一定时候,cpu使用率接近100%(开始cpu使用率很低),我后来发现代码不会在while truedo
中循环了,
但MyWSocketDataAvailable还是不断在接收数据。为什么?我这样写不对吗?请各位高手指点!