AGB  ·  Datenschutz  ·  Impressum  







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

Thread startet execute nicht

Ein Thema von Murkas · begonnen am 22. Mai 2013 · letzter Beitrag vom 26. Mai 2013
 
Murkas

Registriert seit: 22. Mai 2013
11 Beiträge
 
#1

Thread startet execute nicht

  Alt 22. Mai 2013, 16:30
Delphi-Version: 7
Hallo zusammen,

Ich befasse mich nun seit einiger Zeit mit Delphi und habe mich nun an Multithreading probiert. Das heist ich habe mir wie in diversen Anleitungen beschrieben eine neue TCheckThread Klasse von TThread abgeleitet und sie angepasst. Über das Hauptformular rufe ich nun meinen TCheckThread in 1 bis mehreren Instanzen mit verschiedenen Parametern über TCheckThread.Create auf. Genau dort kommt es zum Problem: Der Thread beginnt nicht zu arbeiten.

Hier ein paar Quellcode Ausschnitte

Code:
[...]
type
  TCheckThread = class(TThread)
  private
    Fstartcountarray:unit1.tcountarray;
    Fendstring:string;
    Freforgestringarray:unit1.treforgestringarray;
    Fthreaddone:boolean;
    Fresultstring:string;
    Fresultpoints:integer;
  protected
    function getstatname(statid:integer):string;
    function calcpoints(calcablestring:string):integer;
    procedure getbestreforgeid;
    procedure execute; override;
  public
    constructor Create(startcountarray:tcountarray; endstring:string; reforgestringarray:treforgestringarray);
    property threaddone:boolean read Fthreaddone write Fthreaddone;
    property resultstring:string read Fresultstring write Fresultstring;
    property resultpoints:integer read Fresultpoints write Fresultpoints;
  end;

implementation

constructor TCheckThread.Create(startcountarray:tcountarray; endstring:string; reforgestringarray:treforgestringarray);
var i:integer;
begin
  inherited Create(true);
  Fthreaddone:=false;
  for i:=0 to 15 do Fstartcountarray[i]:=startcountarray[i];
  Fendstring:=endstring;
  Fresultpoints:=0;
  freforgestringarray:=reforgestringarray;
  Freeonterminate:=false;
  self.Resume;
end;

[...]

procedure TCheckThread.execute;
begin
form1.Memo2.Lines.Add('getbestreforgeid starting');
getbestreforgeid;
end;

[...]
(Hinweis: getbestreforgeid: in dieser Prozedur wird der beste Wert zwischen Start- und Endwert ermittelt und in Fresultstring geschrieben. Am Ende wird Fthreaddone auf true gesetzt, sodass die Werte über das Hauptformular ausgelesen werden.)

Aufgerufen wird der Thread dann in einer andren Unit:

Code:
calcthread[q]:=tcheckthread.Create(countarray,endstring,reforgestringarray);
Der gesamte TCheckThread.execute wird vom Compiler weg optimiert, Ich habe schon einiges versucht, dazu aber keine Lösung gefunden. Hat irgendjemand eine Idee dazu?
  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 13:31 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