如何将IEnumerable <t> ExecuteDataReader <t>重构为异步方法

时间:2018-05-16 07:15:45

标签: asynchronous async-await

 public static IEnumerable<T> ExecuteDataReader<T>(string sql,  Func<TdDataReader, T> action)
    {
        using (var connection = new TdConnection(TDConnstring))
        {
            connection.Open();
            using (var cmd = connection.CreateCommand())
            {
                cmd.CommandText = sql;
               using (var dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                        yield return action.Invoke(dr);
                }
            }
        }
    }

*如何使用异步任务&gt; reirte * *

public static async Task<IEnumerable<T>> ExecuteDataReaderAsync<T>(string sql, Func<TdDataReader, T> action)
    {
        using (var connection = new TdConnection(TDConnstring))
        {
            await connection.OpenAsync();
            using (var cmd = connection.CreateCommand())
            {
                cmd.CommandText = sql;
                using (var dr = await cmd.ExecuteReaderAsync())
                {

                    while (await dr.ReadAsync())
                    {
                        yield return action.Invoke(dr);
                    }
                }
            }
        }
    }

*错误 严重性代码描述项目文件行抑制状态 错误CS1624'TeraDataHelper.ExecuteDataReaderAsync(string,Func)'的主体不能是迭代器块,因为'Task&gt;'不是迭代器接口类型\ TeraDataHelper.cs 141 Active

*

1 个答案:

答案 0 :(得分:0)

得到它

{{1}}