Programm terminates after TChromium.Destroy
Posted: Thu Sep 21, 2017 12:06 pm
Hallo I get sometimes Exceptions (Programm terminates) after TChromium.Destroy
Reason: TCustomClientHandler fires Events to destoyed TChromium
I fixed it by:
TCustomClientHandler = class(TCefClientOwn)
public ...
procedure DisconnectEvents;
destructor TCustomClientHandler.Destroy;
begin
DisconnectEvents;
inherited Destroy;
end;
procedure TCustomClientHandler.DisconnectEvents;
begin
FLoadHandler := nil;
FFocusHandler := nil;
FContextMenuHandler := nil;
FDialogHandler := nil;
FKeyboardHandler := nil;
FDisplayHandler := nil;
FDownloadHandler := nil;
FGeolocationHandler := nil;
FJsDialogHandler := nil;
FLifeSpanHandler := nil;
FRequestHandler := nil;
FRenderHandler := nil;
FDragHandler := nil;
FFindHandler := nil;
FEvents := nil;
end;
destructor TChromium.Destroy;
begin ...
if assigned(FHandler) then
TVCLClientHandler(FHandler).DisconnectEvents;
FHandler := nil;
Is there a better way to resolve this?
Kindly regards
Andreas Michelberger
Reason: TCustomClientHandler fires Events to destoyed TChromium
I fixed it by:
TCustomClientHandler = class(TCefClientOwn)
public ...
procedure DisconnectEvents;
destructor TCustomClientHandler.Destroy;
begin
DisconnectEvents;
inherited Destroy;
end;
procedure TCustomClientHandler.DisconnectEvents;
begin
FLoadHandler := nil;
FFocusHandler := nil;
FContextMenuHandler := nil;
FDialogHandler := nil;
FKeyboardHandler := nil;
FDisplayHandler := nil;
FDownloadHandler := nil;
FGeolocationHandler := nil;
FJsDialogHandler := nil;
FLifeSpanHandler := nil;
FRequestHandler := nil;
FRenderHandler := nil;
FDragHandler := nil;
FFindHandler := nil;
FEvents := nil;
end;
destructor TChromium.Destroy;
begin ...
if assigned(FHandler) then
TVCLClientHandler(FHandler).DisconnectEvents;
FHandler := nil;
Is there a better way to resolve this?
Kindly regards
Andreas Michelberger