Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Callback von Thread wird aus DLL-Form nicht aufgerufen

  Alt 21. Feb 2008, 23:55
Ich bin am Verzweifeln!!!

Ich habe eine Hauptanwendung und Plugins als DLL mit DLL-Forms. Nun binde ich per Windows.SetParent die DLL-Form in einen Bereich der Hauptanwendung ein.
In diesem DLL-Form habe ich nun eine Thread-Unit, erstelle einen Thread, welcher ein Callback auslösen soll, wenn er beendet wird. Generell funktioniert das auch - nur nicht aus DLL-Formularen.

Der Thread läuft aber trotzdem, es wird nur eben nicht das Callback ausgelöst.

Hier mal relevante Codes:

Thread-Unit

Delphi-Quellcode:
type
  TMyThread = class(TThread);
  public
    constructor Create(Callback: TNotifyEvent);
...
...
...

constructor TMyThread.Create(CallBack: TNotifyEvent);
begin
  inherited Create(True);
  OnTerminate:=Callback;
  FreeOnTerminate:=True;
end;
DLL-Form: Callback für Thread

Delphi-Quellcode:
procedure Fertig(Sender: TObject);
..
..
procedure TForm1.Fertig(Sender: TObject);
begin
  ShowMessage('SD');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  th: TMyThread;
begin
  th:=TMyThread.Create(Fertig);
  th.Resume;
end;
Hauptformular: DLL-Form einbinden
Delphi-Quellcode:
  Hndl:=PlugIn[High(PlugIns)].PlugInName.SendFormHandle;
  Windows.SetParent(Hndl, Panel1.Handle);
  SetWindowPos(hndl, hwnd_top, 0, 0, 0, 0, SWP_NOSIZE);
Wenn ich die Thread-betreffenden Zeilen in ein neues Projekt oder in andere Projekte implentiere, dann funktioniert das sehr schön! Warum nich auch so?

Ich hoffe ihr könnt mir helfen. Sitze nun seit 7 Stunden an dem Problem!
  Mit Zitat antworten Zitat