Eigentlich finde ich es schöner, eine Funktion zu haben, die eben als Thread läuft, als dafür direkt eine Klasse zu schreiben
Ein Thread läuft immer in einem bestimmten Kontext.
Er braucht Eingabedaten und liefert oder befüllt Ausgabedaten.
Wenn man einen Thread nur als Funktion sieht, dann "belügt" man sich selbst, weil der Kontext irgendwo als globale Variablen vorhanden sein muss.
Ganz anderst ist das bei der Klasse TThread.
Wenn man von TThread ableitet, dann sollte man darauf achten alle Eingabe- und Ausgabedaten als Properties anzulegen.
Beispiel:
Delphi-Quellcode:
// Thread-Klasse zur Berechnung der Mandelbrot Menge
TMandelbrotThread = class(TThread)
public
procedure Execute; override;
// Eingabeparameter
property Ziel : TRect; // Bildausschnitt
property xmin, xmax, ymin, ymax : double; // für Brechnung des Apfelmänchens benötigt
property ColorTable : TColorTable; // Einfärbeschema
// Ausgabeobjekt
property Bitmap:TBitmap;
end;
Bei der Threadklasse siehst du genau, was der Thread an Input braucht und wohin das Ergebnis geht.
Sauber und Objektorientiert!
Würde es die Thread-Klasse nicht schon geben, dann müsste man sie erfinden.