Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DEB DelphiEventBus vs. System.Messaging.TMessageManager (https://www.delphipraxis.net/189171-deb-delphieventbus-vs-system-messaging-tmessagemanager.html)

TiGü 12. Mai 2016 15:16

AW: DEB DelphiEventBus vs. System.Messaging.TMessageManager
 
Zitat:

Zitat von Rollo62 (Beitrag 1338056)
Delphi-Quellcode:
  TMyMessageContainer = class
  public
    Text: string;
    Number: Integer;
  end;
Ist das jetzt eine Klasse, oder nicht ?

Wenn ja, wie wird Create und Destroy dabei aufgerufen ?

Na, ganz normal:

Delphi-Quellcode:
var
  MyContainer: TMyMessageContainer;
begin
  MyContainer := TMyMessageContainer.Create;
  MyContainer.Text := 'hallo';
  ...
  MyContainer.Free;
end;
Kannst natürlich noch einen überladenden Konstruktor hinzufügen, der als Argument die Parameter für die Felder übernimmt.

Rollo62 12. Mai 2016 15:34

AW: DEB DelphiEventBus vs. System.Messaging.TMessageManager
 
Hallo TiGü,

genau das macht mir Angst.

Sender macht Create, und wer Free'D das Ganze ?

Deshalb war ich auf Records umgestiegen.

Dein Beispiel unten liess mich hoffen das kein separates Create/Destroy nötig
Delphi-Quellcode:
 TMyMegaGenericMessage.Create

Könnte man vielleicht damit verheiraten, so das es sich über ADipose selbst zerstört.

Delphi-Quellcode:
procedure TMessageManagerHelper.SendMessageAsynch(const Sender: TObject; AMessage: TMessage; ADelayMS: Cardinal;
  ADispose: Boolean);
begin
  TTask.Run(
    procedure
    begin
      if ADelayMS > 0 then begin
        Sleep(ADelayMS);
      end;
      TThread.Queue(nil,
        Self.SendMessage(Sender, AMessage, ADelayMS);
    end);
end;

procedure TMessageManagerHelper.SendMessageAsynch(const Sender: TObject; AMessage: TMessage; ADispose: Boolean);
begin
  SendMessageAsynch(Sender, AMessage, 0, ADispose);
end;


Rollo

Uwe Raabe 12. Mai 2016 15:56

AW: DEB DelphiEventBus vs. System.Messaging.TMessageManager
 
Für diese Fälle gibt es ja
Delphi-Quellcode:
TObjectMessage<T: class> = class(TMessage<T>)
. Dem kann man im Create mitgeben, ob es sich um die Freigabe der Instanz kümmern soll.

Rollo62 12. Mai 2016 15:59

AW: DEB DelphiEventBus vs. System.Messaging.TMessageManager
 
Wieder was dazugelernt ...

Dankesehr :thumb:

Rolf


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.
Seite 2 von 2     12   

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