【发布时间】:2017-03-25 17:31:06
【问题描述】:
我有
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;
}
}
}
我得到了错误
严重性代码描述项目文件行抑制状态 错误 CS1624 'ArchiveDb.GetArchiveTodos()' 的主体不能是 迭代器块,因为 'Task>' 不是 迭代器接口类型
【问题讨论】:
-
您不能使用带有迭代器块 (
yield) 的异步方法,因为迭代器块所需的返回类型是IEnumerable,而不是Task。
标签: c# .net asynchronous async-await ienumerable