在设计多线程程序的时候.
当关闭程序时,在主窗体的Destroy事件中,检测线程是否正在运行,如果正在运行的话,就Terminate,然后再Free掉
可是,这样,虽然程序窗口关闭了,但在进程中还保留着,一直到线程结束和释放掉,进程才会结束,
如何能将程序关闭的时候,直接线程,进程都结束呢?
当关闭程序时,在主窗体的Destroy事件中,检测线程是否正在运行,如果正在运行的话,就Terminate,然后再Free掉
可是,这样,虽然程序窗口关闭了,但在进程中还保留着,一直到线程结束和释放掉,进程才会结束,
如何能将程序关闭的时候,直接线程,进程都结束呢?
begin
......
end;
这样,可以代码设置线程的Terminated := True,来使线程不再工作API方法,TerminateThread可以终止线程,试试,是不是你想要的结果
在ExeCute中用了While Not Terminate Do
循环内一直有代码运行,
又测试了在线程类的构造函数中使用FreeOnterminate:=true;
和先前效果一样,无法最快速的达到关闭线程及进程的结果.
如果不在Destroy中加入Terminate和Free的话,能够快速关闭,
但是在使用检测内存泄漏时会出现提示泄漏!这样的方法应该不可取~~
申请了合局变量
ThreadList:Tlist;
加入线程的时候,用了ThreadList.add(Thread[i]);
在程序退出的时候用了
TThread(ThreadList[i]).terminate;
TThread(ThreadList[i]).Free;
如果线程在运行的时候关闭窗体,程序进程还会存在,并且要等线程全部释放才能正常结束进程
想快速释放线程关闭进程,但又保证不会出现内存泄漏.不知道如何做