![]() |
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:
woran könnte das liegen? Wenn ich die Prozedur, die im Thread aufgerufen wird, normal aufrufe, ist der Fehler verschwunden.
---------------------------
Anwendungsfehler --------------------------- Exception EOSError in Modul UploadTool.exe bei 0000E096. Systemfehler. Code: 1400. Ungültiges Fensterhandle. --------------------------- OK --------------------------- Danke, ManuMF |
Re: Exception bei Thread-Verwendung
Ist TIdAntiFreeze nichts für dich?
|
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. |
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 ;)
|
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. :(
|
Re: Exception bei Thread-Verwendung
Vielleicht solltest Du die HTTP-Komponente in einen Thread auslagern...
|
Re: Exception bei Thread-Verwendung
Zitat:
|
Re: Exception bei Thread-Verwendung
Nee, die gesamte Kommunikation. Also, so (ohne die Komponente zu kennen)
Delphi-Quellcode:
Natürlich ist das nur Pseudocode
Procedure TMyThread.Execute;
Var cHttp : THTTPClient; Begin cHtttp := THTTPClient.Create (Nil); Try SetupCommunicationParameter (cHttp); cHttp.SendRequest; cHttp.ReceiveAnswer; Finally cHtt.Free; End End; |
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:
ausgeführt (mehr braucht die Kompo nicht). Kann es da helfen, das Create & Co. mit in den Thread zu nehmen?
IdHTTP.Post(Stream, URL);
|
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. |
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