首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

线程终止有关问题

2012-04-08 
线程终止问题大家好!我用delphi开发了一个应用程序,利用了十几个线程。线程都是用的delphi封装的线程类,我

线程终止问题
大家好!我用delphi开发了一个应用程序,利用了十几个线程。线程都是用的delphi封装的线程类,我都设置freeonterminate:=true了。现在想实现关闭窗体时等待所有线程运行完再把窗体关闭。该功能怎么实现?请大家帮忙。谢谢!

[解决办法]
freeonterminate设置为false,创建的时候用一个TObjectList来记录这些线程,关窗体的时候直接释放ObjectList完事。原理:释放ObjectList -> 释放线程(线程释放的时候会堵塞到运行完了才释放)
[解决办法]
循环判断terminate了吗?
[解决办法]
线程FREE的时候会自动调用waitfor,可不手动调用
[解决办法]
学习下。。
[解决办法]
补上例子,楼主请自行按需要修改。

Delphi(Pascal) code
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; 

热点排行