关于XE里面的并行运算疑问:如何在主线程通知任务结束并等待任务结束....

OK_boom 2015-09-24 10:55:42
任务里面是死循环, 点击结束按钮后,从主线程通知任务结束,然后等待所有任务完成后再显示"All Done" 这个流程, 百度/谷歌了一阵没发现这方面的话题,自己用TTask亦试不出来,唯有定义一组外部变量来实现...
各位大神有没有相关的代码?
TTask里面的获取状态代码,
function TTask.GetStatus: TTaskStatus;
var
LFlags: TOptionStateFlags;
begin
LFlags := FState;
if TOptionStateFlag.Faulted in LFlags then
Result := TTaskStatus.Exception
else if TOptionStateFlag.Canceled in LFlags then
Result := TTaskStatus.Canceled
else if TOptionStateFlag.Complete in LFlags then
Result := TTaskStatus.Completed
else if TOptionStateFlag.ChildWait in LFlags then
Result := TTaskStatus.WaitingForChildren
else if TOptionStateFlag.CallbackRun in LFlags then
Result := TTaskStatus.Running
else if TOptionStateFlag.Started in LFlags then
Result := TTaskStatus.WaitingToRun
else
Result := TTaskStatus.Created;
end;

亦就是说FState已经有了[Completed,Cancled]但最终得到的还是Cancled状态,但 用Cancled来判断任务是否结束亦不适合...
...全文
97 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧