Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Exception bei Thread-Verwendung (https://www.delphipraxis.net/94007-exception-bei-thread-verwendung.html)

ManuMF 14. Jun 2007 16:06


Exception bei Thread-Verwendung
 
Hallo,

da der IdHTTP mein Programm bei "normaler" Verwendung einfriert, möchte ich dafür einen Thread verwenden.
Da ich mich nicht so gut damit auskenne, habe ich die Komponente TIdThreadComponent genommen. Wenn ich jetzt aber mein Programm beende, nachdem der Thread mal gestartet wurde, kommt folgende Exception:
Code:
---------------------------
Anwendungsfehler
---------------------------
Exception EOSError in Modul UploadTool.exe bei 0000E096.

Systemfehler. Code: 1400.

Ungültiges Fensterhandle.

---------------------------
OK  
---------------------------
woran könnte das liegen? Wenn ich die Prozedur, die im Thread aufgerufen wird, normal aufrufe, ist der Fehler verschwunden.

Danke,
ManuMF

jfheins 14. Jun 2007 16:08

Re: Exception bei Thread-Verwendung
 
Ist TIdAntiFreeze nichts für dich?

ManuMF 14. Jun 2007 16:13

Re: Exception bei Thread-Verwendung
 
Schon, wenn es was bringen würde...

Wenn man mehr machen muss, als es bloß aufs Formular zu klatschen, bin ich noch nicht dahintergekommen ;-)

Application.ProcessMessages im IdHTTP.onWork läuft zwar, aber das kommt nur so einmal pro Sekunde.

jfheins 14. Jun 2007 23:11

Re: Exception bei Thread-Verwendung
 
Du musste es noch irgendwie auf activ stellen, und dem http sagen, er soll es benutzten - wenn ich mich recht erinnere ;)

ManuMF 15. Jun 2007 12:00

Re: Exception bei Thread-Verwendung
 
Ersteres war eine meiner ersten Aktionen nach dem Platzieren auf dem formular. Letzteres, also wie ich das mit dem IdHTTP verbinde, habe ich aber nicht rausgefunden. Auch die Indy-Hilfe war nicht hilfreich. :(

alzaimar 15. Jun 2007 12:58

Re: Exception bei Thread-Verwendung
 
Vielleicht solltest Du die HTTP-Komponente in einen Thread auslagern...

ManuMF 15. Jun 2007 13:40

Re: Exception bei Thread-Verwendung
 
Zitat:

Zitat von alzaimar
Vielleicht solltest Du die HTTP-Komponente in einen Thread auslagern...

Was genau? Das Erstellen etc. der Komponente?

alzaimar 15. Jun 2007 14:45

Re: Exception bei Thread-Verwendung
 
Nee, die gesamte Kommunikation. Also, so (ohne die Komponente zu kennen)

Delphi-Quellcode:
Procedure TMyThread.Execute;
Var
  cHttp : THTTPClient;

Begin
  cHtttp := THTTPClient.Create (Nil);
  Try
    SetupCommunicationParameter (cHttp);
    cHttp.SendRequest;
    cHttp.ReceiveAnswer;
  Finally
    cHtt.Free;
  End
End;
Natürlich ist das nur Pseudocode

ManuMF 15. Jun 2007 16:56

Re: Exception bei Thread-Verwendung
 
Momentan habe ich die Komponente auf dem Formular sitzen.
Im Thread wird neben der Vorbereitung (laden der Datei in einen Stream, anzeigen des Dateinamens etc.) nur
Delphi-Quellcode:
IdHTTP.Post(Stream, URL);
ausgeführt (mehr braucht die Kompo nicht). Kann es da helfen, das Create & Co. mit in den Thread zu nehmen?

C.Schoch 15. Jun 2007 17:22

Re: Exception bei Thread-Verwendung
 
Hi,
Du solltest die Komponente nach Möglichkeit dynamisch innerhalb des Threads erstellen.
Oder du realisierst sämtliche Zugriffe auf die Komponente per Syncronize.

Ersteres ist IMO zu bevorzugen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Seite 1 von 4  1 23     Letzte »    

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