如何使用 Handle 中的协程 - 在 Caliburn Micro 中实现 IResult

本文关键字:Caliburn Micro 实现 IResult 何使用 Handle | 更新日期: 2023-09-27 18:34:23

我喜欢Caliburn.Micro中的Coroutine/IResult实现,它允许我让MVVM逻辑控制在视图上执行的几个操作。

但是,在处理来自事件聚合器的消息时,我面临着使用相同的方法的需求。我的视图模型实现了 IResult,它产生了以下方法:

public void Handle(T message) { ... }

我已经尝试更改方法以返回 IResult 或 IEnumerable,但这当然无法编译,因为我当时没有遵循接口。

现在我正在使用一种方法来创建我需要的 IResults 列表,然后调用

Caliburn.Micro.Coroutine.BeginExecute(routines.GetEnumerator(((

但我不喜欢那个解决方案,我不确定执行在什么线程上运行。此外,我的日常工作中没有任何上下文,但我知道上下文可能很困难,因为消息可能来自任何地方。但是,如果视图模型是 ViewAware,则可以获取上下文或?

其他人在句柄实现的上下文中做了什么?有经验吗?

希望有一些很酷的解决方案!

如何使用 Handle 中的协程 - 在 Caliburn Micro 中实现 IResult

一种选择是基于理解协程的 Caliburn.Micro 创建自己的 EA。我们已经考虑过开箱即用地添加它,但我还没有解决这个问题。