【问题标题】:Caliburn Micro 2 EventAggregator PublishOnBackgroundThreadCaliburn Micro 2 EventAggregator PublishOnBackgroundThread
【发布时间】:2014-06-30 08:49:26
【问题描述】:

谁能解释我为什么以及何时应该使用 PublishOnBackgroundThread 而不是 PublishOnUIThread

我找不到任何使用案例PublishOnBackgroundThread,我不确定我应该使用什么方法?

【问题讨论】:

    标签: multithreading caliburn.micro eventaggregator background-thread


    【解决方案1】:

    这实际上取决于您要发布的消息的类型。

    如果您使用 EventAggregator 将来自底层服务的消息显示在 UI 中,那么 PublishOnUIThread 最有意义,因为您将在处理消息时更新 UI。当您使用它在视图模型之间进行通信时也是如此。

    相反,有时它用于视图模型发布底层服务正在侦听的事件(而不是依赖于该服务的视图模型)。

    该服务可能会执行一些昂贵的工作,这些工作在后台线程上发生是有意义的。就我个人而言,我会在后台服务中将这项工作推送到后台线程,但不同的人需要不同的选择。

    为了完整起见,最终包含了该方法。

    【讨论】:

    • 感谢您的解释。
    • 我自己也想知道这一点。我有一个发布多个事件的服务 (wcf),我的视图模型会监听它们并相应地更新视图。在这种情况下我应该总是使用 PublishOnUIThread 吗?如果我在处理事件时使用 PublishOnBackgroundThread 并使用 Caliburn.Micro.Execute.OnUIThread 方法,我会从中获得什么还是与在 ui 线程上发布相同?
    • 如果您所做的只是使用绑定来更新 UI,那么这可能并不重要,因为 Caliburn 会自动确保属性通知发生在 UI 线程上。我不记得我头顶的 OnBackgroundThread 的行为,但如果它为发布启动了一个新线程,那么这是一个净损失。我建议使用 OnUIThread。
    猜你喜欢
    • 2013-06-26
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2012-01-29
    • 2012-10-24
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多