Delphi 使用TTask-Sleep选项在给定的时间间隔执行任务
我需要每x秒执行一项任务,我可以使用以下代码实现该目标:Delphi 使用TTask-Sleep选项在给定的时间间隔执行任务,delphi,parallel-processing,delphi-10.3-rio,Delphi,Parallel Processing,Delphi 10.3 Rio,我需要每x秒执行一项任务,我可以使用以下代码实现该目标: var task: ITask; begin task := TTask.Create( procedure() begin //infinite loop while 1 = 1 do begin //time interval sleep(15000); //do something every x seconds
var task: ITask;
begin
task := TTask.Create(
procedure()
begin
//infinite loop
while 1 = 1 do
begin
//time interval
sleep(15000);
//do something every x seconds
end;
end);
task.Start;
但是,当使用sleep(x)时,我无法在任何时候完成任务,例如,当我关闭表单时(我使用的是VCL)
在固定的时间间隔内无限地执行一项任务,但有可能在不等待睡眠完成的情况下中断任务,有什么替代方法?我看了一篇关于使用TEvent的文章,但是我不太明白它是如何工作的。不要使用Sleep,而是使用一个可等待的对象,例如TEvent,并在想要结束任务时发出信号。在对象上等待X秒。如果发出信号,退出。如果超时,请执行该任务。在循环中重复请参见,不要调用
Sleep()
,只需调用事件WaitFor(15000)
方法即可。如果事件发出信号,则中断任务,否则只执行循环工作任务。我将尝试它。谢谢