Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#4

AW: Stringlist bringt Service zum Absturz

  Alt 5. Mai 2011, 15:40
Stimmt, SvcMgr.Application (TServiceApplication) hat kein OnException,
aber SvcMgr läßt die unit Forms.
Forms.Application hat ein OnException.

Aber jetzt fällt mir da wieder was ein.

Leider ist TServiceApplication so schrottig programmiert, daß man da nicht mehr an die Exceptionbehandlung rankommt, ohne die von TServiceApplication zu schrotten.
(es sei denn man möchte das Logging in den Windows-Event-Logs (MSDN-Library durchsuchenReportEvent) umgehen)

Wenn du TService (SvcMgr) verwendest, dann füge mal Folgendes in deine Service-Anwendung (DPR) ein.
Delphi-Quellcode:
uses SysUtils, Classes, SvcMgr, ...;

{$R *.RES}

type
  TServiceApplicationHack = class(TServiceApplication)
  protected
    procedure DoHandleException(E: Exception); override;
  end;

procedure TServiceApplicationHack.DoHandleException(E: Exception);
begin
  // hier kannst du E.Message irgendwo hin loggen
  inherited;
end;

begin
  Application.Free;
  Application := TServiceApplicationHack.Create(nil);
  ...
Und ja, Application wird am ende nicht wieder freigegeben ... das macht die Unit SvcMgr für uns.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Mai 2011 um 15:45 Uhr)
  Mit Zitat antworten Zitat