使用ViewModel上的异步方法,caliburn.micro会做正确的事吗?

Mic*_*per 6 wpf caliburn.micro async-await

正如其他地方所提到的,新的.NET async/await模型通过像病毒这样的软件层传播.最近异步改变现在冒泡到我的视图模型,我想知道,如果它是从安全变化的声明public void DoStuff()public async Task DoStuff()

谢谢!

Val*_*ean 17

Caliburn.Micro中对异步编程模型的支持现在相当不错.

你可以做的事情很少:

  • 在Action方法中使用async/await.要小心,因为动作方法在技术上是事件处理程序,所以你应该async void而不是async Task.
  • Screen事件的异步事件处理程序,如Activated,ViewLoaded等.
  • 屏幕方法的异步覆盖:OnInitialize,OnActivate,...您可以覆盖然后在protected override async void OnInitialize(){}内部,您可以等待另一个任务.
  • 将协同程序转换为任务.使用ExecuteAsync()扩展方法.协程在某些情况下仍然具有一些优势,例如执行上下文.
  • IHandleWithTask<TMessage> - 非常方便......

一篇博文文章描述了一些用例很少的代码片段.还有一个带有示例项目GitHub存储库,我曾经在Caliburn中使用async/await.