线程终止问题
大家好!我用delphi开发了一个应用程序,利用了十几个线程。线程都是用的delphi封装的线程类,我都设置freeonterminate:=true了。现在想实现关闭窗体时等待所有线程运行完再把窗体关闭。该功能怎么实现?请大家帮忙。谢谢!
[解决办法]
freeonterminate设置为false,创建的时候用一个TObjectList来记录这些线程,关窗体的时候直接释放ObjectList完事。原理:释放ObjectList -> 释放线程(线程释放的时候会堵塞到运行完了才释放)
[解决办法]
循环判断terminate了吗?
[解决办法]
线程FREE的时候会自动调用waitfor,可不手动调用
[解决办法]
学习下。。
[解决办法]
补上例子,楼主请自行按需要修改。
uses contnrs;var AList: TObjectList; AThread: TMyThread; i: integer;begin AList := TObjectList.Create; try for i := 0 to 100 do begin AThread := TMyThread.Create(False); ALIst.Add(AThread); end; AList.Free; // 此处释放ObjectList,ObjectList会释放里面全部的线程 // 线程被Free的时候,会自动调用WaitFor // 因此会自动等待全部线程执行完后才继续 except AList.Free; raise; end;end;