【问题标题】:Messenger: How to wait for messages to be processed?Messenger:如何等待消息被处理?
【发布时间】:2020-04-23 08:44:15
【问题描述】:

我有一个使用 MVVMLight messenger 的 Xamarin.Android 应用程序。

应用程序也在使用后台服务。

应用程序和服务都注册到 StopApplicationAndServiceMessage 消息:

Messenger.Default.Register<StopApplicationAndServiceMessage>(...)

它们每个都将自定义方法传递给第二个参数。

应用程序菜单有一个选项可以退出发布 StopApplicationAndServiceMessage 消息的应用程序。

Messenger.Default.Send(new StopApplicationAndServiceMessage(reason));

在应用程序中处理消息时,有没有办法等待/确保消息已被后台服务处理?

任何帮助表示赞赏。

【问题讨论】:

    标签: xamarin.android mvvm-light


    【解决方案1】:

    Register 方法中设置的第二个参数用于确保消息接收。

    Messenger.Default.Register<StopApplicationAndServiceMessage>(
      this,
      message =>
      {
         // message processed here .
      });
    

    【讨论】:

    • 两个注册商处理消息的操作不同
    • 在MainActivity中创建一个全局静态int变量,每次注册机接收消息时,在回调中增加变量,可以监控变量的值是否等于注册机数量。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2013-08-05
    • 2019-06-02
    • 1970-01-01
    相关资源
    最近更新 更多