定时任务的程序中,有多个时间时间点,每天轮循执行相应的任务
时间点是存放在数据库中,取出来之后存放在一个循环链表当中。
用Timer已经实现,但看到网上有很多帖子建议用多项程来代替Timer的实现。不知道多线程该如何实现多个时间点的定时任务,希望能给个例子看看。多谢!
时间点是存放在数据库中,取出来之后存放在一个循环链表当中。
用Timer已经实现,但看到网上有很多帖子建议用多项程来代替Timer的实现。不知道多线程该如何实现多个时间点的定时任务,希望能给个例子看看。多谢!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end; TMyThread = class(TThread)
private
FTime : String;
protected
procedure Execute; override;
public
constructor Create(Suspended: Boolean; ATime: String);
end;var
Form1: TForm1;implementation{$R *.dfm}constructor TMyThread.Create(Suspended: Boolean; ATime: String);
begin
inherited Create(Suspended);
FTime := ATime;
end;procedure TMyThread.Execute;
begin
while not Terminated do
begin
if FormatDateTime('hh:mm:ss', Now()) = FTime then
begin
Application.MessageBox(PChar('定时时间到: ' + FTime), '提示信息', MB_ICONINFORMATION or MB_OK);
break;
end;
Sleep (100);
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
with TMyThread.Create(True, '12:59:40') do
begin
FreeOnTerminate := True;
Resume;
end;
with TMyThread.Create(True, '13:00:10') do
begin
FreeOnTerminate := True;
Resume;
end;
with TMyThread.Create(True, '13:01:00') do
begin
FreeOnTerminate := True;
Resume;
end;
end;end.