AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TIdFTP.Connect aus Thread heraus ergibt AV
Thema durchsuchen
Ansicht
Themen-Optionen

TIdFTP.Connect aus Thread heraus ergibt AV

Ein Thema von Delphi-Freak · begonnen am 14. Mai 2006 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#1

TIdFTP.Connect aus Thread heraus ergibt AV

  Alt 14. Mai 2006, 20:27
Ich möchte, damit mir das Fenster nicht einfriert, alle Kommunikation mit dem FTP Server über einen Thread laufen lassen. (Habe dazu auch hier einige Fragen gestellt.) Ich habe also eine Komponente gebastelt, man könnte es so veranschaulichen:
Code:
TFTPClient (von TObject abgeleitete Klasse)
|- public TIdFTPEx (von TIdFTP abgeleitete Klasse)
|- private TFTPThread (von TThread abgeleitete Klasse)
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 ...).
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).
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von Stefan Hueg
Stefan Hueg

Registriert seit: 13. Jun 2004
Ort: Gießen
187 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TIdFTP.Connect aus Thread heraus ergibt AV

  Alt 16. Mai 2006, 03:42
Für Indy gibt es die Komponente "TIdAntiFreeze". Hier die Beschreibung aus der Borland Help:

Zitat:
Indy works on the blocking model. That is... when calls are made to Indy, they do not return until they are complete. If calls are made in the main thread, this will cause the Application User Interface to "freeze" during Indy calls. TIdAntiFreeze counteracts this effect. TIdAntiFreeze allows Indy to process Application messages so that Windows messages continue to be executed while Indy blocking socket calls are in effect.

Only one TIdAntiFreeze can be active in an application
Vielleicht hilft dir das ja
Stefan Hueg
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#3

Re: TIdFTP.Connect aus Thread heraus ergibt AV

  Alt 16. Mai 2006, 14:03
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 - in TIdFTPEx.Create das inherited Create vergessen, dann kann es auch nicht funktionieren...
Aber trotzdem danke!

LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 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