Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

[Indy10] VCL Aufruf im OnExecute Ereigniss

  Alt 20. Apr 2007, 22:13
Hey,

ich möchte gerne ein Formular aus dem OnExecute Ereigniss des IdTCPServers heraus modal öffnen und warten, bis es geschlossen wurde. Da das Ereigniss in einem Thread abläuft kommt es zu Fehlern mit der VCL, da diese ja nicht threadsicher ist. Wie kann ich jetzt das Formular trotzdem anzeigen?

Habe folgendes probiert, was aber nicht funktioniert, da ich den Fehler "Zugriff verweigert" und beim Beenden mehrere diverse Exceptions erhalte:

Delphi-Quellcode:
procedure TAuthThread.DoShow;
begin
  TfrmAuth(Form).ShowModal;
end;

procedure TAuthThread.Execute;
begin
  inherited;
  Synchronize(DoShow);
end;

function TfrmMain.AuthServerDlg(CData: TClientData): Boolean;
var
  frmAuth: TfrmAuth;
  tAuth: TAuthThread;
begin
  frmAuth := TfrmAuth.Create(Application);
  try
    frmAuth.ClientData := Pointer(CData);
    tAuth := TAuthThread.Create(true);
    tAuth.FreeOnTerminate := true;
    tAuth.Form := Pointer(frmAuth);
    tAuth.Resume;
    // ersetze ich dies mit WaitForSingleObject friert alles ein; Tag wird im OnClose des Forms auf 1 gesetzt
    while frmAuth.Tag = 0 do
    begin
      Application.ProcessMessages;
    end;
    Result := frmAuth.Success;
  finally
    frmAuth.Free;
  end;
end;
Vielen Dank
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat