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 1 von 2  1 2      
Benutzerbild von Deltachaos
Deltachaos

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

Prgramm hängt trotz Thread.

  Alt 17. Aug 2009, 23:54
Hallo.
Ich habe ein Problem und zwar habe ich volgenden Code:

Delphi-Quellcode:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mtTelnetThread;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    Telnet : TTelnetThread;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Telnet := TTelnetThread.create;
  Telnet.Connect('xtain.net', 1338);
end;

end.
Der Tread:
Delphi-Quellcode:
UNIT mTTelnetThread;

interface

uses
  classes,
  sysUtils,
  Dialogs;

type
     public
        constructor create; virtual;
        function Connect(Host: String; Port: Integer): boolean; virtual;

   end;

implementation

constructor TTelnetThread.create;
begin
  inherited create(true);
  freeOnTerminate := true;
end;


function TTelnetThread.Connect(Host: String; Port: Integer): boolean;
begin
  sleep(9999999);
end;
Nunja das Problem ist klar das Das Programm troz eigenem tread hängt. Hat wer ne Idee?

[edit=Luckie]Rechtschreibfehler im Titel korrigiert. Mfg, Luckie[/edit]
[edit=mkinzler]Rechtschreibfehler konsequent im Titel korrigiert Mfg, mkinzler[/edit]
Angehängte Dateien
Dateityp: zip threadprogramm_160.zip (9,2 KB, 3x aufgerufen)
Maximilian Ruta
Ich weiß mein Deutsch ist ! Bei Fragen: ich bin fast immer im Mumble
Server: cubexsports.de
Port: 64738
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Prgramm hängt troz Tread.

  Alt 18. Aug 2009, 00:06
Du hast keinen Thread sondern du rufst ja Sleep direkt auf. Das was in einem TThread Nachfahren parallel abläuft ist alles was in der Methode Execute drin steht. Und diese muss überschrieben werden - mal abgesehen von anderen Unzulänglichkeiten in deinen kleinen Codeschnipseln...
  Mit Zitat antworten Zitat
Benutzerbild von Deltachaos
Deltachaos

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

Re: Prgramm hängt troz Tread.

  Alt 18. Aug 2009, 01:28
Also ich habe das ganze mal so gemacht wie su sagtest.
für einen Sleep funktioniert das sogar.
Das problem ist das ich damit eigentlich eine Telnetverbindung herstellen möchte ohne das bei offner verbindung das formular hängt.

wenn ich das also so mache hängt das form:

Delphi-Quellcode:
procedure TTelnetThread.execute;
begin
  IdTelnet1.Host := Host;
  IdTelnet1.Port := Port;
  try
    IdTelnet1.Connect();
// IsConnect := True;
  except
// IsConnect := False;
  end;
end;
Ne idee?

Verbindung kommt aber beim Server an
Wenn ich dann Disconnecte dann läst sich das Form auch wieder bewegen
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 Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Prgramm hängt troz Tread.

  Alt 18. Aug 2009, 01:30
Zeig mal kompletten Code.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Prgramm hängt troz Tread.

  Alt 18. Aug 2009, 02:16
Zitat von Deltachaos:
Das problem ist das ich damit eigentlich eine Telnetverbindung herstellen möchte ohne das bei offner verbindung das formular hängt.
Also: ein Formular soll erzeugt werden und sichtbar werden.
*Danach* soll eine Telnet-Verbindung gestartet werden und während dieser Zeit soll eine Sanduhr angezeigt werden,
damit der Benutzer weiss, dass das Programm noch arbeitet.

Um dieses Verhalten zu erreichen brauchst du keinen Thread!
Leider hat ein Formular nicht das Event OnAfterShow.
Aber dem kann man nachhelfen.
Falls ich dich überzeugt habe, dass ein Thread hier nicht angebracht ist, kriegst du mehr Infos dazu.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Deltachaos
Deltachaos

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

Re: Prgramm hängt troz Tread.

  Alt 18. Aug 2009, 11:03
Die Telnetverbindung soll aber den ganzen Programmablauf über geöffnet sein.
Solange dies der Fall ist hängt das Formular.
Hier der ganze Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Telnet := TTelnetThread.create;
  Telnet.SetVars('xtain.net', 3118);
  Telnet.Resume;
  
  //Telnet.Disconnect;
  //Telnet.Resume;
end;
Der Thread:
Delphi-Quellcode:
UNIT mTTelnetThread;

interface

uses
  classes,
  sysUtils,
  windows,
  Dialogs,
  IdBaseComponent,
  IdComponent,
  IdTCPConnection,
  IdTCPClient,
  IdTelnet;

type
   TTelnetThread = CLASS(TThread)
     private
       IdTelnet1: TIdTelnet;
       Host: String;
       Port: Integer;

     protected
        procedure execute; override;

     public
        constructor create; virtual;
        procedure Disconnect; virtual;
        procedure Send(Value: String); virtual;
        procedure SetVars(fHost: String; fPort: Integer); virtual;
   end;

implementation


constructor TTelnetThread.create;
begin
  inherited create(true);
  freeOnTerminate := true;
  IdTelnet1 := TIdTelnet.Create(nil);
end;

procedure TTelnetThread.execute;
begin
  IdTelnet1.Host := Host;
  IdTelnet1.Port := Port;
  try
    IdTelnet1.Connect();
// IsConnect := True;
  except
// IsConnect := False;
  end;
end;

procedure TTelnetThread.Send(Value: String);
begin
  IdTelnet1.WriteLn(Value);
end;

procedure TTelnetThread.SetVars(fHost: String; fPort: Integer);
begin
  Host := fHost;
  Port := fPort;
end;

procedure TTelnetThread.Disconnect;
begin
  IdTelnet1.Disconnect();
end;



end.
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 Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Prgramm hängt troz Tread.

  Alt 18. Aug 2009, 11:06
Nebenbei bemerkt, das Ding nett sich Thread und nicht Tread.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Deltachaos
Deltachaos

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

Re: Prgramm hängt troz Thread.

  Alt 18. Aug 2009, 11:08
ohhh,
xD
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
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: Prgramm hängt troz Thread.

  Alt 18. Aug 2009, 11:09
abgesehn davon ist der Thread so total sinnlos, da abgesehn vom dTelnet1.Connect(); alles außerhalb des Threads abläuft, welcher sich sogar nach dem Connect sofort wieder beendet.

und bezüglich dem String über SetVar ... Strings sind nicht threadsicher, also sollte man den String nicht einfach so in einen Thread hineinreichen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Deltachaos
Deltachaos

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

Re: Prgramm hängt troz Thread.

  Alt 18. Aug 2009, 11:12
ähm ja gut.
Die Frage ist erstmal wie erreiche ich es das bei einer Offenen Telnet Verbindung das Main Form nicht hängt

PS: Gibt es iwo ne Gutes Tut für Threads. Ich arbeite nich noch nich solange damit.
Maximilian Ruta
Ich weiß mein Deutsch ist ! Bei Fragen: ich bin fast immer im Mumble
Server: cubexsports.de
Port: 64738
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:21 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