Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Automatischen E-Mail Versand Sinnvoll und Resourcenspare

  Alt 24. Nov 2009, 17:02
Erstell doch einen Thread:
Delphi-Quellcode:
type
  TScheduler = class(TThread)
  private
    FOnTimer: TNotifyEvent;
    FTime: TDateTime;
  protected
    procedure DoTimer;
    procedure Execute; override;
  public
    constructor Create(Time: TDateTime; OnTimer: TNotifyEvent);
  end;

constructor TScheduler.Create(Time: TDateTime; OnTimer: TNotifyEvent);
begin
  inherited Create(True);
  FOnTime := OnTimer;
  FTime := Time;
end;

constructor TScheduler.DoTimer;
begin
  FOnTimer(Self);
end;

constructor TScheduler.Execute;
begin
  Sleep(SecondsBetween(Now, FTime)*1000);
  Synchronize(DoTimer);
end;

procedure TMainForm.MyEvent(Sender: TObject);
begin
  ShowMessage('Happy Birthday');
end;

procedure TMainForm.Create(...);
begin
  TScheduler.Create(
    EncodeDateTime(2009, 11, 26, 01, 30, 0, 0), // Mein Geburtstag - die Uhrzeit ist aber geraten :P
    MyEvent);
end;
Vorsicht: Nur hier im Editor getippt, also keine Garantie auf Fehlerfreiheit (die gibt es aber sowieso nicht ). Ich denke mal, dass Sleep in in diesem Zeitraum genau genug sein sollte - bleibt nur zu hoffen, dass es keine von Windows festgelegte Obergrenze oder soetwas gibt . Theoretisch sollten aber Intervalle von bis zu ca. 24 Tagen damit möglich sein. Sicherlich geht es mit der WinApi auch irgendwie eleganter. Du könntest dir mal in der CodeLib die Delay-Funktion anschauen.
  Mit Zitat antworten Zitat