Am schnellsten geht es vermutlich wenn du dich in die
TFDPhysManager.InternalClose(ATerminate, AWaitForClose: Boolean);
in der FireDAC.Phys reinhängst.
Delphi-Quellcode:
finally
iStartTime := TThread.GetTickCount();
while not lTimeOut and (FDriverList.Count > 0) do begin
lTimeOut := FDTimeout(iStartTime, C_FD_PhysManagerShutdownTimeout);
CleanupDrivers;
Sleep(1);
end;
if FDriverList.Count = 0 then
if FState = dmsTerminating then
lFree := True
else if FState = dmsStoping then
CleanupManager;
if lTimeOut then
FDException(nil, [S_FD_LPhys], er_FD_AccShutdownTO, []);
if lFree then
FDFree(Self);
end;
er_FD_AccShutdownTO Dabei handelt es sich um die im Beitrag zitierte Fehlerkonstante die nur dort wird abgesetzt.
Der Fehler tritt im Finally Block auf. Ich schätze mal das Problem tritt im Umfeld der CleanUpDrivers auf. Wäre nur meine Vermutung.