AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prgramm hängt trotz Thread.

Ein Thema von Deltachaos · begonnen am 17. Aug 2009 · letzter Beitrag vom 18. Aug 2009
Antwort Antwort
Seite 2 von 2     12   
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Prgramm hängt troz Thread.

  Alt 18. Aug 2009, 10:23
soweit ich das weiß benutzt doch die TidTelnet Komponente von Hause aus Threads.
Oder man kann sie so konfigurieren das sie es tut.
Es ist also in keinster Weise notwendig Deine Telnet Session in einen eigenen Thread auszulagern.

Ausserdem ist Telnet Ereignis gesteuert.
Du kannst Daten im Ereignis OnDataAvailable auslesen.


Btw. welche Indy Version nutz Du?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Deltachaos
Deltachaos

Registriert seit: 20. Feb 2008
Ort: Berlin
195 Beiträge
 
Delphi 7 Personal
 
#12

Re: Prgramm hängt troz Thread.

  Alt 18. Aug 2009, 10:32
Ahh es hat sich erledigt
Man musste nur die Option TreadesEvent auf true stellen
Maximilian Ruta
Ich weiß mein Deutsch ist ! Bei Fragen: ich bin fast immer im Mumble
Server: cubexsports.de
Port: 64738
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#13

Re: Prgramm hängt troz Thread.

  Alt 18. Aug 2009, 10:34
also so dürfte alles im Thread ablaufen ... glaub ich
Delphi-Quellcode:
UNIT mTTelnetThread;

interface

uses
  Classes,
  SysUtils,
  Windows,
  Dialogs,
  SyncObjs,
  IdBaseComponent,
  IdComponent,
  IdTCPConnection,
  IdTCPClient,
  IdTelnet;

type
   TTelnetThread = CLASS(TThread)
     private
       FHost: String;
       FPort: Integer;
       FTelnet: TIdTelnet;
       FCSection: TCriticalSection;
       FSend: String;
     protected
       procedure Execute; override;
     public
       constructor Create(const Host: String; Port: Integer);
       destructor Destroy; override;
       procedure Send(Value: String);
   end;

implementation

constructor TTelnetThread.Create(const Host: String; Port: Integer);
begin
  inherited Create(true);
  FHost := Host;
  FPort := Port;
  FSend := '';
  UniqueString(FHost);
  FTelnet := TIdTelnet.Create(nil);
  FTelnet.Host := FHost;
  FTelnet.Port := FPort;
  FCSection := TCriticalSection.Create;
  Resume;
end;

destructor TTelnetThread.Destroy;
begin
  FCSection.Free;
  FTelnet.Free;
end;

procedure TTelnetThread.Execute;
var
  S: String;
begin
  FTelnet.Connect;
  repeat
    FCSection.Enter;
    try
      S := FSend;
      FSend := '';
    finally
      FCSection.Leave;
    end;
    if S <> 'then
      FTelnet.WriteLn(S)
    else Sleep(50); // CPU-Last im Leerlauf senken
  until Terminated;
  FTelnet.Disconnect;
end;

procedure TTelnetThread.Send(Value: String);
begin
  while Value <> 'do
  begin
    FCSection.Enter;
    try
      if FSend = 'then
      begin
        FSend := Value;
        UniqueString(FSend);
        Value := '';
      else Sleep(50); // CPU-Last der Schleife senken
    finally
      FCSection.Leave;
    end;
  end;
end;

end.


Delphi-Quellcode:
Telnet := TTelnetThread.Create('xtain.net', 3118);

...
Telnet.Send('...');


...
Telnet.Terminate;
aber wenn es (so wie Klaus01 meint) auch ohne Thread geht, dann würde ich es auch ohne machen.

Tutorials ... da finden sich unmassen an Threads in der DP und soweit ich weiß, steht sehr viel in der OH und Delphi hat sogar eine Threaddemo mit an Board.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#14

Re: Prgramm hängt troz Thread.

  Alt 18. Aug 2009, 11:20
Zitat von Deltachaos:
[edit=Luckie]Rechtschreibfehler im Titel korrigiert. Mfg, Luckie[/edit]
Dann aber auch konsequent, bitte.

Zitat:
Prgramm hängt trotz Thread.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:20 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