![]() |
Komponenten in Threads verwenden ja/nein ?
Hallo zusammen,
ich habe mal eine Frage zum Einsatz von Threads.Ist es sinnvoll, Komponenten direkt in Threads zu verwenden, wie in diesem Beispiel? Oder spricht etwas dagegen? Wenn ja was? Danke für die Info!
Delphi-Quellcode:
unit HttpGetThreads;
interface uses Classes, IdBaseComponent, IdComponent, IdTCPConnection,IdTCPClient, IdHTTP,IdObjs;//Indy type THttpGetThread = class(TThread) private { Private-Deklarationen } IdHTTP: TIdHTTP; ContentStream:TStringStream; procedure loadComplete; public url:string; protected procedure Execute; override; end; implementation uses Unit1;//Main procedure THTTPGetThread.Execute; begin { Thread-Code hier einfügen } IdHTTP:=TIdHTTP.Create; ContentStream:= TStringStream.Create(toEOF); try IdHTTP.Get(URL,ContentStream); except end; Synchronize(loadComplete); IdHTTP.Destroy; ContentStream.Free; end; procedure THTTPGetThread.loadComplete; begin Form1.parseDoc(ContentStream); end; end. |
Re: Komponenten in Threads verwenden ja/nein ?
Hallo!
Wenn die Komponenten die Du verwendest auf die VCL zugreifen, dann hast Du ein Problem :mrgreen: Von nem Thread heraus solltest Du nur mit Synchronize auf die VCL zugreifen und die Kompos werden das wohl kaum machen. :wink: Grüßle! PS: Ach: "Komponenten in Threads verwenden ja/nein ?" Nein :mrgreen: |
Re: Komponenten in Threads verwenden ja/nein ?
in deinem Fall "Ja"
da du keine VCL-Komponenten verwendest. |
Re: Komponenten in Threads verwenden ja/nein ?
Es kann sein das die http komponente eine Message-Schleife braucht, was thread automatisch nicht hat.
Deswegen wird Sie immer auf ein Connect warten oder auf Daten etc... ciao Radek |
Re: Komponenten in Threads verwenden ja/nein ?
TIdHttp funktioniert definitiv im Thread. Hab ich selbst schon im Thead verwendet ohne Probleme.
|
Re: Komponenten in Threads verwenden ja/nein ?
Nicht immer,
versuche dich gegen einen HTTP Stream zu verbinden, dann geht es im thread nicht ! Aber das ist nur eine Besonderheit. Radek |
Re: Komponenten in Threads verwenden ja/nein ?
Vielen Dank!
Also, wenn ich mal zusammenfassen kann: :warn: Solange ich keine VCL verwende, habe ich kein Problem und kann die Komponenten verwenden. Ist es wie in dem Beispiel sinnvoll bei jedem execute die Instanz von den IDHTTP zu erzeugen oder gibt es noch eine elegantere/bessere/sinnvoller Lösung? :gruebel: |
Re: Komponenten in Threads verwenden ja/nein ?
Hängt von dem wie oft du das Thread erzeugst.
Ich persönlich verwende Synchronize nicht sonder abeite über Messages (SendMessag and so on), das was. ciao radekj |
Re: Komponenten in Threads verwenden ja/nein ?
Die Komponenten, die Du verwendest dürfen dann aber auch nicht auf die VCL zugreifen :warn: :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 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