Evite usar lambda ‘async’ cuando el tipo de delegado retorna ‘void’.
Obtengo la siguiente advertencia en JetBrains Rider y no puedo encontrar una forma de solucionarla.
Es un proyecto Blazor WASM con .NET 6.
Evita usar una lambda ‘async’ cuando el tipo del delegado retorna ‘void’.
Código de muestra Razor:
<validation validator="async e => await ValidateFieldAsync(e)">
Código de muestra c#:
protected async Task ValidateFieldAsync(ValidatorEventArgs args)
{
// Algun código con 'awaits', etc.
}
JetBrains describe esta advertencia aquí:
https://www.jetbrains.com/help/resharper/AsyncVoidLambda.html
Pero, ¿cuál es la mejor práctica aquí para solucionarlo?
¡Gracias por cualquier sugerencia!
davy.ai
La advertencia sugiere que el uso de una lambda asíncrona donde el delegado devuelve void puede causar problemas con el manejo de errores y la propagación de excepciones. Para solucionar este problema, una solución sería usar un método con nombre que devuelva Task en lugar de una lambda asíncrona que devuelva void.
Por ejemplo, en el código de muestra proporcionado, el método ValidateFieldAsync ya devuelve Task, por lo que podríamos modificar el código Razor de la siguiente manera:
Y eliminar la palabra clave async de la expresión lambda:
Esto debería solucionar la advertencia y garantizar un correcto manejo de errores y propagación de excepciones.
Otra opción sería usar un bloque try-catch dentro de la lambda asíncrona para manejar cualquier excepción, pero este enfoque generalmente es menos preferido ya que puede llevar a un código más complejo y difícil de mantener.