JeOù puis-je me tromper en retournant un IEnumerable <T> à partir d'une méthode asynchrone?
public static async Task<IEnumerable<ParseTask>> GetArchiveTodos()
{
using(SqlConnection connection = new SqlConnection(SharedInfo.ConnectionString))
using(SqlCommand command = new SqlCommand("GetArchiveTodos", connection))
{
command.CommandType = CommandType.StoredProcedure;
await connection.OpenAsync();
SqlDataReader row = await command.ExecuteReaderAsync();
while(await row.ReadAsync())
{
ParseTask pageToParse = new ParseTask()
{
Id = row.GetInt32(0),
PageType = row.GetString(1),
Html = row.IsDBNull(2) ? null : row.GetString(2),
ThreadId = row.IsDBNull(3) ? null : (int?)row.GetInt32(3),
PageNum = row.GetInt32(4)
};
yield return pageToParse;
}
}
}
et je reçois l'erreur
Code de gravité Description du projet État Suppression de la ligne de fichier Erreur CS1624 Le corps de 'ArchiveDb.GetArchiveTodos() ne peut pas être un iterator bloc parce que 'la tâche>' est pas un type d'interface iterator
Vous ne pouvez pas avoir de méthodes asynchrones avec le bloc d'itération ('yield'), car le type de retour requis pour le bloc d'itérateur est' IEnumerable', pas 'Task'. – Evk