Thema: Delphi Synchronize Frage

Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#6

Re: Synchronize Frage

  Alt 30. Jun 2008, 10:29
Hi,

du könntest auch einen lokalen Recordtyp definieren und über einen Callback/Event die Werte per Record übergeben.

Dann rufst Du im Thread-Context eine Prozedur mit Synchronize(MyProc) auf, die den Record befüllt und die Eventmethode startet.

z.B.
Delphi-Quellcode:
type
  TMeinStatus = record
    Message: WideString;
    ErrorCode: Integer;
  end;

  TMeinStatusEvent = procedure(Status: TMeinStatus) of object;
  
  ...

  TMeinThread = class(TThread)
  private
    FStatus: TMeinStatus;
    FOnStatus: TMeinStatusEvent;
  ...
  protected
    procedure SetStatus;
  public
    property OnStatus: TMeinStatus read FOnStatus write FOnStatus;
  end;

...

  procedure TMeinThread.SetStatus;
  begin
    if Assigned(OnStatus) do
      FOnStatus(FStatus);
  end;

...
  procedure TMeinThread.Execute;
  begin
    ...
    FStatus.Message := 'test';
    FStatus.ErrorCode := 0;
    Synchronize(SetStatus);
    ...
  end;
Dann eine Procedur im VCL-Threadcontext erstellen, die als OnStatus-Event fungiert. Event zuweisen und lüppt. Prinzip verstanden?

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat