我正在研究不同的开源项目,以了解人们如何以不同的方式处理同一个问题。这次是事件聚合器,特别是 Caliburn.Micro 的聚合器。
我注意到 Rob 说如果没有提供线程,EA 将编组到 UI 线程。该行具体是:
public static Action<System.Action>
DefaultPublicationThreadMarshaller = action => action();
然后进一步:
marshal(() =>
{
*SNIP*
});
我不明白他怎么能说这将在 UI 线程上调用,是否所有操作都在 UI 线程上调用,除非您指定一个不是?(顺便说一句,您可以指定调用哪个操作,上面的行只是在没有提供操作的情况下)。