AGB  ·  Datenschutz  ·  Impressum  







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

Thread pausieren lassen und aufwecken

Ein Thema von Quo · begonnen am 18. Feb 2008 · letzter Beitrag vom 20. Feb 2008
Antwort Antwort
Seite 2 von 2     12   
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Thread pausieren lassen und aufwecken

  Alt 19. Feb 2008, 20:15
Zwei grundlegende Dinge zu TThread:

1. Kein Application.ProcessMessages aufrufen. Du befindest dich ein einem Thread der asynchron zum VCL Thread läuft (den du mit Application.ProcessMessages indirekt aufrufst)
2. Kein Zugriff auf irgendwelche Formulare oder VCL Komponenten aus dem Thread heraus, Ausnahme: Die Zugriffe erfolgen in einer Thread Methode oder Form Methode, welche über die Delphi-Referenz durchsuchenTThread.Synchronize() Methode aufgerufen werden.
  Mit Zitat antworten Zitat
Quo

Registriert seit: 18. Feb 2008
6 Beiträge
 
#12

Re: Thread pausieren lassen und aufwecken

  Alt 20. Feb 2008, 00:20
Zitat von Muetze1:
Zwei grundlegende Dinge zu TThread:

2. Kein Zugriff auf irgendwelche Formulare oder VCL Komponenten aus dem Thread heraus, Ausnahme: Die Zugriffe erfolgen in einer Thread Methode oder Form Methode, welche über die Delphi-Referenz durchsuchenTThread.Synchronize() Methode aufgerufen werden.
Vielen Dank Muetze1!!! jetzt habe ich alles so moderniesiert das ich mit suspend mein thread anhalten und mit resume weiterforsetzen kann. Ihre Anmerkung war entscheidend!!!
  Mit Zitat antworten Zitat
Quo

Registriert seit: 18. Feb 2008
6 Beiträge
 
#13

Re: Thread pausieren lassen und aufwecken

  Alt 20. Feb 2008, 00:25
Zitat von sirius:
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.
Vielen dank für Ihr beispiel,das war sehr hilfsreich und verständlich.Jetzt kann aus meiner Schleife "raus"- thread anhalten , serielle Schnittstelle benutzen und die Schleife weiter laufen lassen.
Endlich kann ich meinen Code erweitern))

ich habe das ganze einbißchen umgeändert und folgendes bekommen:

Delphi-Quellcode:

unit Unit1;

interface

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

type TmyThread=class(TThread)
     public
      procedure go;
     private

     protected
       procedure execute; override;
     end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);





  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }

     Anzeige:TMyThread ;
  end;

var
  Form1: TForm1;
  i:integer;
   a,b:boolean;
    event:TEvent;
implementation

{$R *.dfm}
procedure TmyThread.execute;
//var event:TEvent;


begin
//Zugriff aus dasselbe Event
event:=TEvent.Create(nil,true,false,'myEvent');

 while(not terminated) do
  begin
   event.waitfor(infinite);


  //mach etwas
   i:=i+1;
   sleep(100);
    form1.Edit1.Text:=inttostr(i);




  Synchronize(go);

  end;
 event.free;
end;



procedure TmyThread.go;
begin
if a=false then

event:=TEvent.Create(nil,true,false,'myEvent');

form1.Edit1.Text:=inttostr(i);
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;

a:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);// Schleife anhalten bzw. Event anlegen!
begin
a:=false;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
a:=true;
end;



end.
  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 22:22 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