[教程] QWorker 中自由控制延迟作业的执行时序

在 QWorker 中,我们一般使用 Delay 来实现定间隔延迟作业执行。如果要重复执行,可以简单的设置设置 ARepeat 参数即可按照 ADelay 指定的指定定时执行。但在某些场景下,我们要求作来立即执行一次后,后续再按照指定的间隔执行,直接使用 Delay 显然无法达到目的。

下面我们给出一个例子,使用 Delay 来实现这一需求。

第一步:我们使用 Post 来提交一个立即执行的作业

Workers.Post(DoJob,nil);

第二步:我们在 DoJob 函数执行完成时,调用 Delay 来延迟15秒执行下一次操作。

procedure DoJob(AJob:PQJob);
begin
...
Workers.Delay(DoJob,15*Q1Second,nil);
end;

在上面的例子里,我们完成可以在第二步中,修改代码,根据当前状态,动态控制延迟的时间,从而达到动态控制延迟间隔的目的。

procedure DoJob(AJob:PQJob);
begin
...
if 条件1成立 then
    Workers.Delay(DoJob,5*Q1Second,nil);
else
    Workers.Delay(DoJob,15*Q1Second,nil);
end;

滚动至顶部