Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [Indy10] VCL Aufruf im OnExecute Ereigniss (https://www.delphipraxis.net/90632-%5Bindy10%5D-vcl-aufruf-im-onexecute-ereigniss.html)

Zacherl 20. Apr 2007 22:13


[Indy10] VCL Aufruf im OnExecute Ereigniss
 
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

omata 20. Apr 2007 23:48

Re: [Indy10] VCL Aufruf im OnExecute Ereigniss
 
Hallo Florian,

schau doch mal hier.

Gruss
Thorsten

Zacherl 21. Apr 2007 11:02

Re: [Indy10] VCL Aufruf im OnExecute Ereigniss
 
Danke, :thumb: das probier ich direkt mal aus!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz