wpf async-await caliburn.micro

wpf - ¿Calumn.micro hará lo correcto con el método async en ViewModel?



async-await caliburn.micro (3)

Marco Amendola , un gerente de proyecto en el proyecto Caliburn.Micro, escribió un artículo que tiene este título: Coroutines están muertos. Larga vida a las Corutinas. y lo tituló de esta manera debido a la aparición del modelo de programación async / wait y si lees el artículo verás que async / wait da vida a lo que Coroutines hizo en el pasado, así que supongo que podrías usarlos de manera segura donde tienes usado Coroutines antes. te aconsejo que leas el artículo.

Como se mencionó en otra parte, el nuevo modelo .NET async / await se propaga a través de capas de software como un virus. Un cambio asíncrono reciente ahora ha borboteado a mi modelo de vista, y me pregunto si es una declaración de cambio segura desde public void DoStuff() a public async Task DoStuff() ?

¡Gracias!



El soporte del modelo de programación asincrónica en Caliburn.Micro es bastante bueno ahora.

Pocas cosas que puedes hacer:

  • Use async / await en el método de acción . Tenga cuidado, ya que los métodos de acción son, técnicamente, manejadores de eventos, usted debe hacer un async void lugar de una async Task .
  • Controladores de eventos asíncronos para eventos de pantalla , como Activated, ViewLoaded y otros.
  • Asíncrona anula los métodos de pantalla : OnInitialize, OnActivate, ... Puede anular como protected override async void OnInitialize(){} y dentro puede esperar otra tarea.
  • Convierte Corutinas a Tareas . Use el método de extensión ExecuteAsync() . Las corutinas todavía tienen algunas ventajas en algunos escenarios, como el contexto de ejecución.
  • IHandleWithTask<TMessage> - bastante útil ...

Hay una publicación de blog que describe algunos casos de uso con pocos fragmentos de código. Y un repositorio de GitHub con un proyecto de muestra que solía jugar con async / await en Caliburn.