![]() |
TIdFTP.Connect aus Thread heraus ergibt AV
Ich möchte, damit mir das Fenster nicht einfriert, alle Kommunikation mit dem FTP Server über einen Thread laufen lassen. (Habe dazu auch
![]()
Code:
In meinem Form habe ich ein Feld vom Typ TFTPClient, dort drinnen eine Methode Connect, welche wiederum an TFTPThread eine Message schickt, er solle die Connect Methode von TIdFTPEx aufrufen. Im der Execute-Methode vom Thread habe ich dann ein while GetMessage-Konstrukt und rufe somit ggfs. aus dem Thread heraus TIdFTPEx.Connect auf. Soweit funktioniert es auch, nur beim inherited Connect von TIdFTPEx gibt es dann eine AV (beim Schreiben von Adresse ...).
TFTPClient (von TObject abgeleitete Klasse)
|- public TIdFTPEx (von TIdFTP abgeleitete Klasse) |- private TFTPThread (von TThread abgeleitete Klasse) Was habe ich dabei falsch gemacht, bzw. spuckt die Connect-Methode von den Indys die AV aus, oder kann er sie gar nicht erst "finden" bzw. aufrufen und spuckt deshalb schon die AV aus? Danke schon mal für eure Hilfen! LG, ich @Mods: Ich hoffe es ist hier das richtige Forum, sonst bitte verschieben... Edit: Habe mich irgendwie vertan, wenn ich die Methode direkt aus dem Form aufrufe (also TFTPClient.TIdFTPEx.Connect), dann gibt es eine AV, via Thread bleibt dieser bei Connect nur hängen (mittels Windows.Beep ausgetestet). |
Re: TIdFTP.Connect aus Thread heraus ergibt AV
Für Indy gibt es die Komponente "TIdAntiFreeze". Hier die Beschreibung aus der Borland Help:
Zitat:
|
Re: TIdFTP.Connect aus Thread heraus ergibt AV
Danke mal, wäre auf jeden Fall eine Lösung; Nachteil ist halt auch (soweit ich das verstanden habe), dass nur alle soundsoviel Millisekunden die Messages abgearbeitet werden, aber eben nicht in einem anderen Thread gearbeitet wird.
Beim Ausprobieren hab ich mir jetzt eine neue Kompo von TIdFTPEx abgeleitet, darin Client auf Self gesetzt, um im Code sonst nicht viel umschreiben zu müssen. Siehe da, ich rufe das Ganze normal auf (ohne Thread-Umweg!!!), und es gibt trotzdem eine AV, das Problem dürfte also nicht am Thread liegen... LG, ich Edit: Irgendwie voll komisch, aber ich habe - keine Ahnung wann und wieso :gruebel: - in TIdFTPEx.Create das inherited Create vergessen, dann kann es auch nicht funktionieren... Aber trotzdem danke! LG, ich |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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