Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: Threads und TBitmaps
1. Sep 2014, 18:24
@Medium ich denke es hängt von den Anforderungen ab, mit Synchronisierung egal ob Canvas.Lock oder eigenen CriticalSections wird es bei mehreren fast so langsam dass man es auch im Hauptkontext laufen lassen könnte und ohne kommt es definitiv zu Fehlern, was leicht zu zeigen ist:
Delphi-Quellcode:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
TTestThread=Class(TThread)
private
FFn: String;
public
Constructor Create(fn: String); overload;
Procedure Execute; override;
End;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TTestThread }
constructor TTestThread.Create(fn: String);
begin
inherited Create(false);
FFn := fn;
end;
procedure TTestThread.Execute;
var
bmp :TBitmap;
i:Integer;
begin
inherited;
bmp :=TBitmap.Create;
bmp.Width := 100;
bmp.Height := 100;
bmp.Canvas.Pen.Color := clBlue;
for I := 0 to 100 do
begin
bmp.Canvas.MoveTo(0,0);
bmp.Canvas.LineTo(100,i);
end;
bmp.SaveToFile(' C:\temp\test\' + Ffn );
bmp.Free;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
i:Integer;
begin
for I := 0 to 20 do TTestThread.Create(IntToStr(i)+' .bmp');
end;
end.
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
Geändert von Bummi ( 1. Sep 2014 um 18:32 Uhr)
|