Einzelnen Beitrag anzeigen

BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
495 Beiträge
 
Delphi 12 Athens
 
#19

AW: Neustart der Applikation aus Stabilitätsgründen...

  Alt 29. Aug 2022, 13:50
Alternativ könnte ich das ja auch hinter das "Application.Run" setzen (was ich nun auch gemacht habe...). Das ist dann der letztmöglich Zeitpunkt.
Die finalization Abschnitte der Units werden noch später ausgeführt. Den spätesten Zeitpunkt den du damit noch erreichen könntest, wäre das finalization einer minimalen Unit, die im Projekt als erstes in der Uses-Anweisung steht.

Zu dem Zeitpunkt sind auch alle Forms und sonstige Komponenten der Anwendung freigegeben, was direkt nach dem Run in der Regel noch nicht der Fall ist.

So eine Unit könnte in etwa so aussehen:
Delphi-Quellcode:
unit AutoRestartUnit;

interface

var
  AutoRestart: Boolean = False;
  AutoRestartCmdLine: PChar;

implementation

uses
  Winapi.ShellAPI, Winapi.Windows;

initialization
  AutoRestartCmdLine := CmdLine;
finalization
  if AutoRestart then begin
    ShellExecute(0, 'open', PChar(ParamStr(0)), AutoRestartCmdLine, nil, SW_SHOW);
  end;
end.
Da hast Du natürlich recht. Wobei ich mich schwer tue die "uses" des Projekts manuell zu bearbeiten. Bleibt meine Unit dann auch oben? Üblicherweise pflegt doch die IDE diese "uses"-Liste...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat