Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: DLLs in Hintergrund-Thread laden

  Alt 19. Mär 2014, 18:24
Wie wäre es mit lazy load, also die Prozeduren einer DLL in einer Klasse/Unit kapseln und die Prozeduren indirekt aufrufen, d.h. für jede DLL-Prozedur folgendes Pattern programmieren:
Delphi-Quellcode:
Var
  myDLLProcPtr : Procedure (foo : TBar);

Procedure LazyLoadLibary;
Begin
  if hLibrary<>0then exit;
  hLibrary := LoadLibrary('TheDLL.DLL');
  myDLLProcPtr := GetProcPtr(hLibary,'MyProcedure');
  ...
End;

Procedure MyDLLProc (foo : TBar);
Begin
  LazyLoadLibrary;
  myDLLProcPtr(foo);
End;
DLLs werden erst dann geladen, wenn sie benötigt werden. Zeitkritische Libraries können explizit geladen werden, auch über Threads. Dann hast Du das beste aus beiden Welten: Du lädst nur Libraries, die Du benötigst und die, die kritisch sind, werden am Anfang in Threads geladen.
  Mit Zitat antworten Zitat