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

但是,在处理来自eventaggregator的消息时,我面临使用相同方法的需求。我的视图模型实现了IResult,它导致以下方法:

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


我尝试过更改方法以返回IResult或IEnumerable,但是当然不会编译,因为那时我不遵循该接口。

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


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


但是我不喜欢这种解决方案,也不确定执行在哪个线程上运行。我的例程中也没有任何上下文,但是我知道上下文可能很困难,因为消息可能来自任何地方。但是,如果viewmodel是ViewAware,则可以获取上下文还是?

在处理实现方面,其他人做了什么?有经验吗?

希望有一些不错的解决方案!

最佳答案

一种选择是根据Caliburn.Micro的了解协程的方式创建自己的EA。我们已经考虑过将其添加为开箱即用,但我还没有解决。

07-28 09:47