DELPHI 用TThread如何判断线程是否存在 并且释放线程
4个回答
展开全部
判断线程是否存在使用:
if Assigned(workthread) then
begin
//do work
end;
释放线程使用:
可以使线程对象自动释放,使用:workthread.FreeOnTerminate :=True;
如果想自己释放线程则应该先判断线程是否存在和是否结束然后再释放,使用:
if Assigned(workthread) and (not workthread.Finished) then
begin
//workthread.terminate; //停止线程
//workthread.suspended; //使线程暂停
以上两种都可以,如果使用Terminate则应该等待线程完全结束
workthread.Free; //释放线程
end;
if Assigned(workthread) then
begin
//do work
end;
释放线程使用:
可以使线程对象自动释放,使用:workthread.FreeOnTerminate :=True;
如果想自己释放线程则应该先判断线程是否存在和是否结束然后再释放,使用:
if Assigned(workthread) and (not workthread.Finished) then
begin
//workthread.terminate; //停止线程
//workthread.suspended; //使线程暂停
以上两种都可以,如果使用Terminate则应该等待线程完全结束
workthread.Free; //释放线程
end;
追问
我做的是 LABEL的 CAPTION 每秒加1的刷新 用你的方法释放会报句柄错误
追答
给我你的邮箱,我简单的写个例子,发给你!
展开全部
通过线程 Handle 或ThreadID来识别线程, 通过 属性 Terminated 测试线程是否终止.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Thread.FreeOnTerminate := True; 时线程执行体结速就会自动释放
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
线程和普通过程,并无二样,一段过程执行完毕后,它的使命也就完成了.无需释放销毁.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询