线程要怎么样销毁了?(50分)

  • 主题发起人 主题发起人 marco_hsu
  • 开始时间 开始时间
M

marco_hsu

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了个存储数据的线程,然后在前面用FOR循环调用,头一次没有问题,第二次再调用就报内存错误了,不知该如何设计线程?》
 
procedure xxx.execute;
var
....
begin
freeonterminate:=ture;
....
...
...
end
 
我有这句话的
 
呵呵,应该是你设置的变量被销毁了,在此调用就出错了
 
我调用过程如下:
for I := 0 to lview_KQ.Items.Count - 1do
begin
ThrDownData.Create(strtoint(lview_KQ.Items.SubItems[7]));//线程
Application.ProcessMessages ;
end;
 
freeonterminate:=ture;
这个的意思是当执行完以后,自动销毁自身,多次使用线程的话,你应该用freeonterminate:=False;
 
还是不行,有时报‘在异步允许时,操作不能被执行’有时就直接报内存错误,什么FFFFF一串,单独执行就没有问题,一用FOR循环就有问题
 
ado好像不是线程安全的
 
你没有做好线程同步造成的
 
是不是你的TList没有delete
 
ThrDownData的Execute贴出来看看
上下文信息不够
 
for循环中执行线程后面加一句sleep(100)看看效果,估计不会出错了哦!不过效率就非常低了,哈哈!
 
后退
顶部