【Delphi】中使用消息Messages(四)RTL 消息演示

Demo演示(RTL部分)的功能包括:

 

  1. 消息的订阅(SubscribeToMessage)
  2. 消息退订(Unsubscribe)
  3. 消息处理方法的三种实现方式(内嵌、对象方法、普通过程)
  4. 发送消息(普通文本、记录)
  5. 多个订阅同一个消息

特别说明

为了演示方便,所有功能集成在一个Form中,包括发送和接收消息等。实际使用中大多是在不同的单元(Form)间进行通信的!另外为了方便使用的是VCL框架,事实上除了windows消息外,都是可以支持FireMonkey的。

先看下演示效果:

RTL消息实现:

        1. 首先需要引用单元System.Messaging

uses
  System.Messaging, // RTL 消息单元

        2. 需要声明对象:MessageManager: TMessageManager;

private
    { Private declarations }
    ....
    MessageManager: TMessageManager;

        3. 接收方订阅消息:MessageManager.SubscribeToMessage

procedure TForm_Message_VCL.Button_SubScrible1Click(Sender: TObject);
begin
  MessageManager := TMessageManager.DefaultManager;
  SubscriptionId1 := MessageManager.SubscribeToMessage
    (System.Messaging.TMessage<UnicodeString>,
    procedure(const Sender: TObject; const M: System.Messaging.TMessage)
    begin
      Memo1.Lines.Add('订阅消息1-直接处理(延迟3000毫秒): ' + (M as System.Messaging.TMessage<UnicodeString>).Value);
      sleep(3000);
    end);
end;

TMessageManager.SubscribeToMessage的定义:

function SubscribeToMessage(const AMessageClass: TClass; const AListener: TMessageListener): Integer; overload;

其中AMessageClass表示一个定义的消息类,可以是字符串、数字型、记录结构或者对象。

AListener:表示一个消息响应监听处理器,可以是一个内嵌的过程、对象方法、普通过程函数等。演示程序中的订阅消息1对应的是内嵌过程,订阅消息2对应的是对象方法,订阅消息3对应的是普通函数过程,

        4. 发送方发送消息:MessageManager.SendMessage

procedure TForm_Message_VCL.Button_SendMessageClick(Sender: TObject);
var
  MessageManager: TMessageManager;
  Message: System.Messaging.TMessage;
begin
  Memo1.Lines.Add('开始执行: ' + FormatDateTime('hh:mm:ss zzz',Now));
  MessageManager := TMessageManager.DefaultManager;
  Message := System.Messaging.TMessage<UnicodeString>.Create(Edit1.Text);
  MessageManager.SendMessage(Sender, Message, True);
  Memo1.Lines.Add('结束执行: ' + FormatDateTime('hh:mm:ss zzz',Now));
end;

下一节:【Delphi】中使用消息Messages(五)Windows消息​​​​​​​

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值