关于线程的问题!不知道是怎么回事,请大家帮忙! ( 积分: 100 )

H

hubo927

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TReCallSMS.Execute;
var
TmpData: TReceiveData;
begin
while gSMSList.Count > 0do
begin
TmpData := TReceiveData(gSMSList.Items[0]);
DealData(TmpData);
gSMSList.Delete(0);
end;
end;
gSMSList是全局变量,在程序的其他地方向gSMSList中加入对象后,上面的代码不会执行,请问是什么原因?但我在创建线程对象前,往gSMSList中加入对象后,上面的代码是会执行到的,为什么在以后再加入对象就不行了呢?
 
procedure TReCallSMS.Execute;
var
TmpData: TReceiveData;
begin
while gSMSList.Count > 0do
begin
TmpData := TReceiveData(gSMSList.Items[0]);
DealData(TmpData);
gSMSList.Delete(0);
end;
end;
gSMSList是全局变量,在程序的其他地方向gSMSList中加入对象后,上面的代码不会执行,请问是什么原因?但我在创建线程对象前,往gSMSList中加入对象后,上面的代码是会执行到的,为什么在以后再加入对象就不行了呢?
 
gSMSList: TObjectList
怎么没人知道吗?
 
真的没人知道问题在哪里吗?
 
procedure TReCallSMS.Execute;
var
TmpData: TReceiveData;
begin
while not terminateddo
begin
while gSMSList.Count > 0do
begin
TmpData := TReceiveData(gSMSList.Items[0]);
DealData(TmpData);
gSMSList.Delete(0);
end;
sleep(100);
end;
end;
注意:TObjectList好像不是线程安全的。建议换成TThreadList。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部