Einzelnen Beitrag anzeigen

Inspur1

Registriert seit: 28. Aug 2024
10 Beiträge
 
#1

Threadklasse mit Event aktualisiert nicht

  Alt 28. Aug 2024, 05:17
Greetings!

Ich entwickel in FreePascal eine Threadklasse mit einem Event und einigen Eigenschaften.
Um das Problem besser zu erklären, habe ich das Beispiel kompromiert.

Delphi-Quellcode:
unit uTest;

interface

uses Classes;

type
  TTestThread = class(TThread)
  private
    FTestProperty: string;
    FOnTest: TNotifyEvent;
  protected
    procedure DoTest; virtual;
    procedure Execute; override;
  public
    constructor Create(CreateSuspended: Boolean);
    destructor Destroy; override;
    property TestProperty: string read FTestProperty write FTestProperty;
    property OnTest: TNotifyEvent read FOnTest write FOnTest;
  end;

implementation

constructor TTestThread.Create(CreateSuspended: Boolean);
begin
  inherited Create(CreateSuspended);
  FTestProperty := 'default';
end;

destructor TTestThread.Destroy;
begin
  inherited;
end;

procedure TTestThread.DoTest;
begin
  if not Assigned(FOnTest) then
    FOnTest(self);
end;

procedure TTestThread.Execute;
begin
  DoTest;
end;


end.



// Call

private
  FTest: TTestThread;
  procedure MyTest(Sender: TObject);

procedure TForm1.MyTest(Sender: TObject);
begin
  FTest.TestProperty := '>>> Test2 <<<';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FTest := TTestThread.Create(false);
  FTest.FreeOnTerminate := false;
  FTest.OnTest := MyTest;
  FTest.Resume;
  Caption := FTest.TestProperty;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if Assigned(FTest) then
    FTest.Free;
end;
Ich will im Event die Eigenschaft ändern aber es bleibt bei "default".
Wie mache ich das richtig?
  Mit Zitat antworten Zitat