TThread线程挂起时,Execute中的函数未执行完成,待线程重新执行时,会接着执行未完的函数,但此时资源已释放,导致程序出错。有人遇到这种问题吗?
添加引用计数。
等引用计数为0时在释放资源。
在Execute中建立一个内核对象,然后要挂起线程之前WaitForSingleObject。
线程运行一次自然就退出了,你可以一直死循环啊,大概就这样子while (WaitForSingleObject(xx, 0) <> WAIT_OBJECT_0) do
begin
while true do
begin
iOutTime := GetTickCount;
if (GetTickCount - iOutTime) < 60000 * 10 then //10分钟运行一次
begin
xxxxx;
xxxxx;
sleep(100); //休眠100毫秒给其他线程运行机会
end else
break;
end;
end;