Delphi 2009 - 造成一个多小时的延迟?

Delphi 2009 - create a delay of over an hour?

我的程序需要发送大约 600 封电子邮件。由于我的 ISP 每小时只允许 400 个,我需要发送其中的 300 个,等待一个小时再发送 300 个。我真的不希望我的程序挂起一个小时,因为用户可能想用它做其他事情在等待的时候。更好的是,他们甚至可能想要关闭它。

有没有办法延迟一个小时,同时保持程序响应,甚至允许它关闭并唤醒继续?

我发现这个很有用

[

但是声明了一个变量

var
  SE: TSimpleEvent;

哪个Delphi2009没看懂

顺便说一句,如果答案涉及线程,请您仔细解释一下,甚至给出代码,因为我以前从未使用过线程(无论如何都不知道!)

简单的解决方案往往是最好的。您可以使用间隔为 1 秒并从 3600 开始倒计时的标准 TTimer。当您的计数器为零时,一小时过去了。

这是一个表明我观点的虚拟实现:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Tag := 1;
end;

procedure Send300EMails;
begin
  // Dummy
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Tag := Timer1.Tag - 1;

  if Timer1.Tag = 0 then
  begin
    Timer1.Enabled := false;
    Timer1.Tag := SecsPerHour;
    Send300EMails;
    Timer1.Enabled := True;
  end;
end;