![]() |
Re: Problem mit TidHTTP in Thread
Zitat:
hängt es eventuell damit...!? Das ist die Procedure
Delphi-Quellcode:
procedure TmySqlClass.PSaveToSQL(NewArray : TList; ID : integer);
var i : integer; Response : String; LParams : TStringlist; n : string; begin LParams := TStringlist.Create; LParams.Add('QUERY=SAVE'); n := inttostr(0); try for i := 0 to NewArray.Count -1 do begin if (TDateien(NewArray.items[i]^).Available = false) then begin LParams.Add( 'id'+n+'='+inttostr(ID)); LParams.Add( 'filename'+n+'='+TDateien(NewArray.items[i]^).Filename); LParams.Add( 'size'+n+'='+inttostr(TDateien(NewArray.items[i]^).size)); LParams.Add( 'typ'+n+'='+StringReplace(TDateien(NewArray.items[i]^).typ,'.','',[rfReplaceAll])); LParams.Add( 'sprache'+n+'='+TDateien(NewArray.items[i]^).Leanguage); LParams.Add( 'erstellt'+n+'='+FormatDateTime('yyyy-mm-dd hh:mm:ss', TDateien(NewArray.items[i]^).Create)); LParams.Add( 'geaendert'+n+'='+FormatDateTime('yyyy-mm-dd hh:mm:ss', TDateien(NewArray.items[i]^).Modified)); LParams.Add( 'md5'+n+'='+TDateien(NewArray.items[i]^).MD5); n:= inttostr(strtoint(n)+1); //sleep(3); end; // if end; // for response := IdHTTP1.Post('http://www.server.de/delphi.php', LParams); //showmessage(response); except on e:exception do showmessage(e.Message); end; LParams.Free; end; |
Re: Problem mit TidHTTP in Thread
Hi,
damit die Hauptanwendung nicht blockiert wird sollte das IdHttp in einem Thread ausgelagert werden ! Des weiteren sollte auf der Main-Form ein TIdAntifreeze seien ! Und zu guter letzt muss alles was im Thread abläuft und auf andere Gui Elemente zugreift/ändert syncronisiert werden. Gruß Data |
Re: Problem mit TidHTTP in Thread
ich erzeuge die immer neu:
Delphi-Quellcode:
nein mein Problem war das ich im Hauptformular eine Komponente habe(TScrollbox) auf welche ich in dieser prozedur zugegriffen habe um mir etwas anderes anzigen zu lassen. Jetzt habe ich diesen Teil ausgelagert in eine extraProzedur und jetzt geht es.
with TIdHTTP.Create(nil) do
try . . . finally Free; end; Das mit dem TIdAntifreeze werd ich mir heut abend mal genauer anschauen. THX :thumb: |
Re: Problem mit TidHTTP in Thread
AntiFreeze funktioniert bei mir nie, und warum ziehst du das IdHTTP nicht einfach auf die Main Form? Alles andere ist Verschwendung von Rechenzeit (zugegeben, sehr wenig, aber trotzdem unnötig.)
|
Re: Problem mit TidHTTP in Thread
ja wenn ichs auf die Mainform setze dann hängt diese während ich im Thread die Anzahl der Nachrichten ermittle ;)
|
Re: Problem mit TidHTTP in Thread
@Angel4585:
Zitat:
Zitat:
Gruß Data |
Re: Problem mit TidHTTP in Thread
TIdAntiFreeze hatte bei mir auch noch nie funktioniert, habe es seitdem gelassen. Warum das nich geht? K.A.
|
Re: Problem mit TidHTTP in Thread
Bei mir gehts auch nie...
|
Re: Problem mit TidHTTP in Thread
AntiFreeze ist auch nicht notwendig wenn das ganze im Thread läuft. Im Gegensatz zur breiten Meinung finde ich schon das TIdHttp auch im Thread erstellt werden soll wenn es dort genutzt wird. Der Grund liegt in der Objectorientierung und der Vermeidung von Fehlern. Wenn die Http-Komponente nur im Thread benötigt wird gehört sie auch dort hin. Desweiteren ist damit sicher gestellt das die Komponente nicht von einem zweiten Thread gleichzeitig genutzt wird.
|
Re: Problem mit TidHTTP in Thread
Hi,
das IdHttp gehört in den Thread wie SirThornberry schon gesagt hat. Desweiteren ist es besser das TIdAntifreeze zu benutzen, selber auf die Form zu ziehen. Existiert kein TIdAntifreeze erzeugt Indy selber eine globale Instanz, das Antifreeze ist somit so oder so da. Nur wenn man es selbst auf die Form ziehst hat man noch die Mögleichkeit auf die Properties des Antifreeze Einfluss zu nehmen. Interessant sind da nämlich die Eigenschaften "ApplicationHasPriority", "OnlyWhenIdle", "IdleTimeOut" und "Active". Gruß Data |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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