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;
我的程序需要发送大约 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;