AGB  ·  Datenschutz  ·  Impressum  







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

Mein TThread blockiert die Anwendung

Ein Thema von Poolspieler · begonnen am 3. Okt 2005 · letzter Beitrag vom 3. Okt 2005
 
Poolspieler

Registriert seit: 9. Aug 2004
165 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Mein TThread blockiert die Anwendung

  Alt 3. Okt 2005, 17:48
Hi,
vielen Dank für Deine Antwort, die hat mich schon ein gutes Stück weiter gebracht.
Mein Beispiel hat jetzt genau das Verhalten, welches ich mir gewünscht habe.

Überarbeitetes Beispiel:
Delphi-Quellcode:
unit UnitThread;

interface

uses Classes, ExtCtrls, Windows, StdCtrls;

type
  TMeinThread = class(TThread)
  private
    { Private-Deklarationen }
    Text: TLabel;
    i: integer;
    procedure machen;
    procedure ausgeben;
  protected
    procedure Execute; override;
  public
    { Public-Deklarationen }
    constructor Create(_Text: TLabel);
  end;

implementation

uses SysUtils;

constructor TMeinThread.Create(_Text: TLabel);
begin
  inherited Create(false);
  Priority := tpNormal;
  Text := _Text;
end;

procedure TMeinThread.Execute;
begin
  while not Terminated do begin
    machen;
  end;
end;

procedure TMeinThread.machen;
begin
  i := 0;
  while i <= 100 do begin
    sleep(500);
    Synchronize(ausgeben);
    Inc(i);
  end;
end;

procedure TMeinThread.ausgeben;
begin
  Text.Caption := IntToStr(i);
end;

end.
Aber ist das wirklich der richtige Weg für so eine Aufgabe?
Ich habe eine sehr große Klasse geschrieben (aktuell noch OHNE Thread), die sehr viele Berechnungen durchführt und äußerst viele Labels, Charts und andere Bedienelemente aktualisieren bzw. auslesen muss. Diese soll nun auf einen Thread umgestellt werden um ein blockieren der Anwendung zu verhindern (application.processmessages funktioniert nicht so ganz, wie ich mir es vorstelle...)

Muss ich nun wirklich für jedes Anzeige- und Bedienelement eine eigene private Variable (hier z.B. das private i:integer) deklarieren? Und dann in einer oder mehreren Methoden die jeweiligen zugehörigen Objekte aktualiseren?
Oder gibt es da eine einfachere Elegantere Lösung?

Gruß,
Poolspieler
Andreas
  Mit Zitat antworten Zitat
 


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 12:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz