Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Thread pausieren lassen und aufwecken

  Alt 19. Feb 2008, 17:37
Das wäre jetzt ein Beispiel für Event und waitforsingleobject. Allerdings habe ich nicht direkt die API-Funktionen benutzt, sondern eine Klasse, die genau diese Funktionen kapselt/benutzt.

Der Thread würde von Button1 gestartet. aber er läuft erst weiter, wenn Button2 gedrückt wurde.
Delphi-Quellcode:
uses ...,syncobjs;

type TmyThread=class(TThread)
     public
     protected
       procedure execute; override;
     end;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    event:TEvent;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TmyThread.execute;
var event:TEvent;
begin
  event:=TEvent.Create(nil,true,false,'myEvent'); //Zugriff aus dasselbe Event
  event.waitfor(infinite);

  //mach etwas


  event.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var thread:TmyThread;
begin
  label1.Caption:='warte';

  event:=TEvent.Create(nil,true,false,'myEvent'); //Event anlegen (mit Namen)

  with Tmythread.Create(true) do //Thread starten
  begin
    FreeOnTerminate:=true;
    resume;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  event.SetEvent;
  event.Free;
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat