wpf - caliburn.micro 会在 ViewModel 上使用异步方法做正确的事情吗?

标签 wpf async-await caliburn.micro

正如其他地方提到的,新的 .NET 异步/等待模型像病毒一样通过软件层传播。最近的异步更改现在已经冒泡到我的 View 模型中,我想知道它是否是来自 public void DoStuff() 的安全更改声明至 public async Task DoStuff() ?

谢谢!

最佳答案

Caliburn.Micro 对异步编程模型的支持现在已经很不错了。
你可以做的几件事:

  • 在 Action 方法中使用 async/await .小心,因为操作方法在技术上是事件处理程序,你应该做 async void而不是 async Task .
  • Screen 事件的异步事件处理程序 ,像 Activated、ViewLoaded 等。
  • Screen 方法的异步覆盖 : OnInitialize, OnActivate, ... 您可以将其覆盖为 protected override async void OnInitialize(){}在里面你可以等待另一个任务。
  • 将协程转换为任务 .使用 ExecuteAsync()扩展方法。协程在一些场景中还是有一些优势的,比如执行上下文。
  • IHandleWithTask<TMessage> - 非常方便...

  • a blog post desribing some use cases用很少的代码片段。还有一个 GitHub repository with sample project我曾经在 Caliburn 中玩过 async/await。

    关于wpf - caliburn.micro 会在 ViewModel 上使用异步方法做正确的事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15417354/

    相关文章:

    c# - 在 ListView WPF 中设置项目焦点

    c# - 如何为 ListBoxItem 中定义的 UI 元素的属性设置动画?

    Flutter 如何处理异步/等待中的错误

    c# - DebuggerStepThrough、DebuggerHidden 在异步等待方法中不起作用

    c# - Task.StartNew() 在 STA 模式下的工作方式不同?

    Caliburn.Micro IEventAggregator Publish方法缺少重载

    c# - Windows Phone 通用应用程序在导航时抛出 AccessViolation

    c# - 在 WPF 中配置 ListBox,这样我就可以在不按住 CTRL 键的情况下选择多个项目

    c# - Caliburn Micro 中 TextBox 的 GotFocus 事件?

    c# - 当我不知道它可能抛出的位置时如何记录异常?