AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Komponenten in Threads verwenden ja/nein ?
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten in Threads verwenden ja/nein ?

Ein Thema von ozz · begonnen am 18. Dez 2006 · letzter Beitrag vom 18. Dez 2006
Antwort Antwort
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#1

Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 18:34
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 18:39
Hallo!

Wenn die Komponenten die Du verwendest auf die VCL zugreifen, dann hast Du ein Problem
Von nem Thread heraus solltest Du nur mit Synchronize auf die VCL zugreifen und die Kompos werden das wohl kaum machen.

Grüßle!

PS: Ach: "Komponenten in Threads verwenden ja/nein ?"
Nein
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 18:49
in deinem Fall "Ja"
da du keine VCL-Komponenten verwendest.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
radekj

Registriert seit: 17. Dez 2006
22 Beiträge
 
#4

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 19:41
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 19:49
TIdHttp funktioniert definitiv im Thread. Hab ich selbst schon im Thead verwendet ohne Probleme.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
radekj

Registriert seit: 17. Dez 2006
22 Beiträge
 
#6

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 19:53
Nicht immer,

versuche dich gegen einen HTTP Stream zu verbinden, dann geht es im thread nicht !

Aber das ist nur eine Besonderheit.

Radek
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#7

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 21:55
Vielen Dank!
Also, wenn ich mal zusammenfassen kann:
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?
  Mit Zitat antworten Zitat
radekj

Registriert seit: 17. Dez 2006
22 Beiträge
 
#8

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 22:14
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
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#9

Re: Komponenten in Threads verwenden ja/nein ?

  Alt 18. Dez 2006, 22:35
Die Komponenten, die Du verwendest dürfen dann aber auch nicht auf die VCL zugreifen
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  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 17:33 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