Liste<Monobjet> ne contient pas une définition pour GetAwaiter

J'ai une méthode qui retourne une Liste<> d'un objet. Cette méthode prend du temps pour s'exécuter.

private List<MyObject> GetBigList()
{
    ... slow stuff
}

Cette méthode est appelée à partir de 4 ou 5 sources. Alors, j'ai pensé que je voudrais essayer et utiliser async et await pour garder les choses en mouvement et cette liste s'appuie. J'ai ajouté cette méthode:

public async Task<List<MyObject>> GetBigListAsync()
{
    var resultsTask = GetBigList();
    var resuls = await resultsTask;
    return resuls;
}

Mais, sur cette ligne:

var resuls = await resultsTask;

J'obtiens cette erreur:

Liste<Monobjet> ne contient pas une définition pour GetAwaiter,
et aucune méthode d'extension 'GetAwaiter' acceptant un premier argument de type List<Monobjet> a pu être trouvé.

Ce qui me manque?

  • Votre exemple de code ne montre pas de toute utilisation d'une Tâche dans la GetBigList méthode, ni est-il marqué que asynchrone, ce qui signifie que le résultat de cette méthode ne peut pas être attendu.
  • essayez async Task<Liste<Monobjet>> GetBigList()
  • Rappelez-vous, attendre n'est pas une opération synchrone dans une opération asynchrone. Attendent des signes le reste de la méthode actuelle comme la continuation de l'existence d'un fonctionnement asynchrone. Attendent est sur la gestion de l'asynchronisme, de ne pas le créer. Si vous voulez une opération synchrone asynchrone, vous allez devoir trouver un moyen de faire que cela se produise.