Entwickler-Ecke

Sonstiges (.NET) - Was wird in einer DLL als erstes ausgeführt?


mannyk - So 30.10.11 17:26
Titel: Was wird in einer DLL als erstes ausgeführt?
Hallo!
Ich habe mal eine Verständnisfrage:
Wenn eine DLL geladen wird, was wird dann zuerst ausgeführt? Ich denke mal jene Objekte, die gerade aufgerufen und gebraucht wurden.

Gibt es eine Möglichkeit irgendein statisches Code-Konstrukt in eine DLL zu implementieren, das automatisch als Erstes ausgeführt wird, wenn die DLL geladen wird. Also ohne dass man im aufrufenden Code explizit das Konstrukt aufrufen muss?

Danke für eure Hilfe!
Lg,
mannyk


pdelvo - So 30.10.11 19:10

Nein.

Das Einzige was es gibt, was ein wenig in deine Richtung geht sind statische Konstruktoren


mannyk - So 30.10.11 19:46

Hallo,

danke für deine Antwort.
Ich habe daran auch schon gedacht. Allerdings werden statische Konstrkutoren soweit ich weiß erst dann aufgerufen, wenn die dazugehörige Klasse aufgerufen wird.
Danke tortzdem!
Lg,
mannyk


pdelvo - So 30.10.11 23:07

Sie werden aufgerufen, wenn die Klasse kompiliert wird. Das passiert, wenn eine Methode aufgerufen wird, in der die Klasse in irgend einer weise benutzt wird, oder wenn eine Klasse kompiliert wird, die eine Variable deiner Klasse enthält.


Th69 - Mo 31.10.11 10:23

Hallo pdelvo,

ersetze mal "kompilieren" durch "benutzen" oder "verwenden" - dann stimmt deine Aussage so einigermaßen (gerade bei einer Klassenbibliothek (DLL) weiß der Compiler ja noch nicht, in welcher Reihenfolge die Klassen und Methoden aufgerufen werden).


pdelvo - Mo 31.10.11 10:58

Ich rede hierbei nicht vom C# Compiler, sondern vom JIT Compiler während der Laufzeit


Christian S. - Mo 31.10.11 11:35

user profile iconpdelvo hat folgendes geschrieben Zum zitierten Posting springen:
Ich rede hierbei nicht vom C# Compiler, sondern vom JIT Compiler während der Laufzeit
Auch dann stimmt es meines Wissens nicht, denn ich kann ein Assemly mit ngen bei einer Installation auch vorkompilieren. Die statischen Konstruktoren werden bei erster Verwendung der Klasse aber trotzdem aufgerufen.