Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi TOmniWorker mit property TNotifyEvent (https://www.delphipraxis.net/178334-tomniworker-mit-property-tnotifyevent.html)

WoGe 2. Jan 2014 14:33

TOmniWorker mit property TNotifyEvent
 
Ist es erlaubt/sinnvoll einem TOmniWorker ein property vom Typ TNotifyEvent zuverpassen?

Delphi-Quellcode:
  TIPosProvider = class(TOmniWorker)
  strict private
    aiMessage: string;
  private
    fOnTimer2: TNotifyEvent;
    procedure SetOnTimer2(const Value: TNotifyEvent);
  public
    function Initialize: boolean; override;
    procedure OMChangeMessage(var msg: TOmniMessage); message MSG_CHANGE_MESSAGE;
    procedure OMSendMessage(var msg: TOmniMessage); message MSG_SEND_MESSAGE;
    procedure OMTimer2(var msg: TOmniMessage); message MSG_TIMER_1;
    property OnTimer2 : TNotifyEvent read fOnTimer2 write SetOnTimer2; //<-----
  end;
Delphi-Quellcode:
procedure TIPosProvider.OMTimer2(var msg: TOmniMessage);
begin
  Task.ClearTimer(1);
//  Task.Comm.Send(1, 'One-shot timer');
//  Task.Comm.Send(MSG_WO_DISPATCH, 'LED');
  if Assigned(fOnTimer2) then
  begin
    fOnTimer2(Self);
  end;
end;
Ich konnte hierfür kein Beispiel finden.
Da mein Testprog funktioniert und ich eigentlich davon ausgehe, dass diese Procedure im Kontext des Hauptthreads läuft, müsste es eigentlich erlaubt sein.

Grüße
wo

himitsu 2. Jan 2014 15:00

AW: TOmniWorker mit property TNotifyEvent
 
Das mit dem Event ist natürlich nicht verboten.
Man darf ja auch andere extene Funktionen aufrufen. Egal ob direkt oder über eine Registrierung.

Aber beim Thema Thread sollte man natürlich überall aufpassen in welchem Threadkontext was aufgerufen wird und ob die aufgerufene Funktion notfalls threadsave ist, also paralelle Aufrufe verträgt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz