Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Threads und TBitmaps
3. Sep 2014, 15:27
Kann ich so nicht nachvollziehen, läuft wie erwartet
EDIT Überwachung des Thread-Kontexts
Delphi-Quellcode:
unit PaintThread;
interface
uses
Classes;
type
TPaintThread = class( TThread )
private
procedure Zeichnen;
protected
procedure Execute; override;
end;
implementation
uses
SysUtils,
Windows;
{ TPaintThread }
procedure TPaintThread.Execute;
begin
if MainThreadID = GetCurrentThreadId
then
raise Exception.Create( ' Upps, ich darf nicht im MainThread-Kontext sein!' );
inherited;
while not Terminated do
begin
Synchronize( Zeichnen );
Sleep( 1 );
end;
end;
procedure TPaintThread.Zeichnen;
begin
if MainThreadID <> GetCurrentThreadId
then
raise Exception.Create( ' Upps, ich bin nicht im MainThread-Kontext!' );
end;
end.
Delphi-Quellcode:
unit FormMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs,
PaintThread;
type
TForm1 = class( TForm )
private
FPaintThread : TPaintThread;
public
procedure AfterConstruction; override;
procedure BeforeDestruction; override;
end;
var
Form1 : TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.AfterConstruction;
begin
inherited;
FPaintThread := TPaintThread.Create( False );
end;
procedure TForm1.BeforeDestruction;
begin
inherited;
FPaintThread.Free;
end;
end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
Geändert von Sir Rufo ( 3. Sep 2014 um 15:33 Uhr)
|