Einzelnen Beitrag anzeigen

Lord_stelzer

Registriert seit: 24. Okt 2006
Ort: Hannover
13 Beiträge
 
#1

Thread execute wird nicht ausgeführt

  Alt 16. Jul 2009, 13:00
Halli Hallo,
Ich möchte einen Clienten schreiben der Dauerhaft versucht auf einen Server zu connecten und dann evtl. auch was hinzuschicken.
Um Das Programm damit nicht langsamer zu amchen habe ich diesen Teil in einen Thread gepackt.
Weil ich mit Threads noch kine Erfahrungen gemacht habe habeich ein neues Programm erstellt um das ganze übersichtlich zu haben und es besser zu verstehen. Nun Wird aber Execute im Thread garnicht ausgeführt.
Könnt ihr mir vielleicht sagen wo mein Fehler steckt?

Main-Unit:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2, ExtCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdTCPClient1: TIdTCPClient;
    procedure FormCreate(Sender: TObject);
  private
    Main : TMain;
  public
    Time:string;
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Main := TMain.Create(tpnormal);
end;

end.
Thread-Unit:
Delphi-Quellcode:
unit Unit2;

interface

uses
  Classes, ExtCtrls, WinSock, SysUtils, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient;

type
  TMain = class(TThread)
  IdTCPClient: TIdTCPClient;
  Timer1: TTimer;
  private

  protected
    procedure Execute; override;
    procedure Update;
  public
   constructor Create(ThreadPriority: TThreadPriority);
  end;

implementation
uses Unit1;

{ Wichtig: Methoden und Eigenschaften von Objekten in visuellen Komponenten dürfen
  nur in einer Methode namens Synchronize aufgerufen werden, z.B.

      Synchronize(UpdateCaption);

  und UpdateCaption könnte folgendermaßen aussehen:

    procedure Main.UpdateCaption;
    begin
      Form1.Caption := 'Aktualisiert in einem Thread';
    end; }


{ Main }

constructor TMain.Create(ThreadPriority: TThreadPriority);
Begin
inherited Create(false);
Priority:=ThreadPriority;
end;

procedure TMain.Execute;
begin
Timer1.Create(nil);
IdTCPClient.Create(nil);
with IdTCPClient do
Begin
ASCIIFilter:=false;
MaxLineLength:=16384;
ReadTimeOut:=0;
RecvBufferSize:=32768;
SendBufferSize:=32768;
end;
with Timer1 do
Begin
enabled:=true;
Interval:=1000;
end;
  try
  IdTCPClient.Connect(100);
  except
  end;

Synchronize(Update);
end;

procedure TMain.Update;
begin
  Form1.caption := '00:00:00';
end;

end.
also das Synchronize wird schon garnicht mehr ausgeführt...
Ich bin den Quellcode auch schon mit F7 durchgegangen aber ohne Fehler...
Danke für jede Antwort
  Mit Zitat antworten Zitat