Hallo,
ich beschäftige mich gerade mit Threads. Ich habe mir eine kleine Routine geschrieben, die ich ausführen lassen möchte. Da diese Routine ein bisschen Zeit in ansproch nimmt, habe ich mir überlegt das ganze in ein Thread zu packen. Leider funktioniert das nur manchmal. Könnt ihr mal draufschauen?
Vielen Dank im vorraus.
Delphi-Quellcode:
unit UThreads;
interface
uses
Classes, ExtCtrls, Windows;
type
TFarbe =
record
R : Integer;
G : Integer;
B : Integer;
end;
type
TMyThread =
class (TThread)
private
FImage : TImage;
public
protected
procedure Execute();
override;
published
property Image : TImage
Read FImage
Write FImage;
end;
implementation
procedure TMyThread.Execute();
var x, y : Integer;
Farbe : TFarbe;
begin
for x:=0
to FImage.Width
do
begin
for y:=0
to FImage.Height
do
begin
Randomize;
with Farbe
do
begin
R:=Random(255);
G:=Random(255);
B:=Random(255);
FImage.Canvas.Pixels[x, y]:=
RGB(R, G, B);
end;
end;
end;
end;
end.
Ausruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var MyThread1 : TMyThread;
MyThread2 : TMyThread;
MyThread3 : TMyThread;
MyThread4 : TMyThread;
begin
MyThread1:=TMyThread.Create(True);
MyThread2:=TMyThread.Create(True);
MyThread3:=TMyThread.Create(True);
MyThread4:=TMyThread.Create(True);
MyThread1.Image:=Image1;
MyThread2.Image:=Image2;
MyThread3.Image:=Image3;
MyThread4.Image:=Image4;
MyThread1.Resume;
MyThread2.Resume;
MyThread3.Resume;
MyThread4.Resume;
end;