我第一次在线学习Caliburn.Micro的一些教程。有些教程使用的是旧的1.3.0版本,我使用的是较新的2.0.0.6版本,这是最新的Nuget软件包,可能是这种差异的根源:
尝试发布以下消息时:
public void Red()
{
_events.Publish(new ColorEvent(new SolidColorBrush(Colors.Red)));
}
编译器抛出错误,指出未找到重载。发布的唯一重载可用具有以下签名: void Publish(对象消息,Action marshal)
我通过使用下面显示的后台工作线程方法让这个工作,但在我的情况下,它似乎有点矫枉过正。是否真的从Caliburn.Micro删除了单个参数重载?
此外,文档在这里: https://caliburnmicro.codeplex.com/wikipage?title=The%20Event%20Aggregator 仍然显示使用更基本的单个参数示例的示例,您只需传递消息。此链接中的文档是否是正确描述2.0.0.6的最新文档?
public void Red()
{
_events.Publish(new ColorEvent(new SolidColorBrush(Colors.Red)),
action => Task.Factory.StartNew(action));
}
最后,奖励积分:
除了在后台线程上发布消息之外,这第二个参数有什么用呢?有人可以提供一些其他可以用于此重载的示例吗?
答案 0 :(得分:11)
在Caliburn Micro版本2.0中,EventAggregator.Publish
方法也会采取措施来整理事件。要保持2.0之前的行为,您应该切换到EventAggregator.PublishOnUIThread
方法。有关1.5和2.0之间不兼容性的信息,请参阅迁移说明here。
总的来说,我认为Codeplex文档有点过时了。有关最新new dedicated web site的信息,请参阅documentation。