Announcement

Collapse
No announcement yet.

TThread in dynamisch geladenen DLLs

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TThread in dynamisch geladenen DLLs

    TThread fragt in der Methode Synchronize die Variable RaiseList (deklariert in system.pas). RaiseList ist als threadvar deklariert. Nun habe ich gelesen, das eine DLL, die dynamisch geladen, also mit LoadLibrary aufgerufen wird keine TLS-Variablen (=threadvar) verwenden darf. Kann man also TThread nicht in einer DLL verwenden, die dynamisch geladen wird???
    Ich habe das testweise mal probiert, die Anwendung läuft, aber es scheint Probleme zu geben wenn in der Execute-Methode Exceptions auftreten. Auch wenn innerhalb von Synchronize Exceptions auftreten, kann ich die nicht mit try except abfangen. Ist das normal oder liegt das vielleicht am dynamischen DLL-Import?

  • #2
    Hi

    Jain. Normalerweise ist das TLS (Thread Locale Storage) Handling auch in DLL's möglich. Das Exceptionhandling in Threads wurde ab D3/D4 ? auf D5 geändert. Mit D5 gibt es also generell Ärger, obwohl Borland ausdrücklich meint das die Execute Methode in ein try except Block gekapselt ist. Ich kapsle generell den Code der Execute/Synchronize Methode nochmals, und WICHTIG ! kein raise im except end; Block.

    Gruß Hage

    Comment

    Working...
    X