Problema asincrónico con respecto a los tipos

asynchronous c# dapper sql

Pregunta

Recientemente cambié de Entity Framework a Dapper. Hasta el momento estoy realmente satisfecho con los resultados; sin embargo, estoy teniendo un problema asíncrono que tengo dificultades para resolver.

Un ejemplo es el siguiente:

var list1 = await _db.getList(...);   // async Task<Element> getList(...)
var list2 = v_list1.select( async item => {

  var flag = await _db.getFlagValue(...); // async Task<bool> getFlagValue(...)
  item.flag = flag;
  return item;

});

debido a la "asincronización" antes de que el tipo de "elemento" de la lista2 sea IEnumerable<Task<Element>> lugar de IEnumerable<Element> .

Si cambio getFlagValue para que sea sincronización en lugar de asincrónico y cambie el código, entonces funciona bien.

Traté de agregar un adicional

.Select( async r => await r );

hasta el final, pero no funcionó. Aunque el tipo de lista2 era correcto, se colgó en tiempo de ejecución.

Espero haber proporcionado suficiente código para mostrar el problema.

Respuesta aceptada

Necesita await Task.WhenAll(list2) .

Task.WhenAll() toma una colección de tareas y devuelve una tarea de una colección de resultados.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué