DLL Funktionen in einem Thread benutzen

Twinsetter

Erfahrenes Mitglied
Ich habe Probleme mit dem Aufruf von DLL-Funktionen in einem Thread.
Ich muß den Aufruf der DLL-Funktion in einen Thread (ich wüßte momentan nichts besseres) verlagern, weil von der DLL ein Dialog erzeugt wird, den ich im Hauptprogramm auswerten (Auslesen der Dialogfelder) möchte. Ich habe keinen anderweitigen Zugriff auf die Daten des Dialogs.
Das funktioniert alles auch soweit wie gewünscht, wenn ich jedoch den Thread vom Hauptprogramm aus mit Terminate beenden will, gibt's eine Exception. Lasse ich den Thread weiterlaufen (z.B. durch eine Endlosschleife im Execute-Block) funktioniert alles und der Thread wird mit Beenden des Hauptprogrammes ordentlich beendet.

Hier der Quelltext der Threadproceduren:
Code:
var
  ValidateApplication : function(App:PChar; Option:PChar):word;stdcall;


procedure TNewLic.Execute;
begin
  DLL:=LoadLibrary(PChar(DLLName));
  try
    if DLL<>0 then begin
      @ValidateApplication:=GetProcAddress(DLL,'ValidateApplication');
      if @ValidateApplication<>nil then begin
       //löschen der Lizenzinfo
        ValidateApplication(PChar(ID),PChar('makeInvalid'));
       //Lizenzdialog anzeigen 
        ValidateApplication(PChar(ID),PChar(SubID));
      end;
      FreeLibrary(DLL);
    end;
  except
  end;
  repeat
    //Synchonisieren mit Hauptthread
    Synchronize(StopFunc);
  until Terminated;
end;

procedure TNewLic.StopFunc;
begin
  //Procedur ruft NewLic.Terminate auf
  Form1.sync;
end;


Habe schon alles probiert, komme aber irgendwie nicht weiter?
 
Zurück