相关疑难解决方法(0)

使用async/await与DataReader?(没有中间缓冲区!)

我的目标很简单,我想做异步I/O调用(使用异步等待) - 但是:

好.

目前这里是我的代码,它的工作是从db读取并将每一行项目投射到a Func<>

public IEnumerable < T > GetSomeData < T > (string sql, Func < IDataRecord, T > projector)
{
    using(SqlConnection _conn = new SqlConnection(@"Data Source=..."))
    {
        using(SqlCommand _cmd = new SqlCommand(sql, _conn))
        {
            _conn.Open();
            _cmd.CommandTimeout = 100000;
            using(IDataReader rdr = _cmd.ExecuteReader())
            {
                while (rdr.Read())  yield    return projector(rdr);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,投影机是什么?

每个类都有一个函数,它获取a record(IDataRecord)并创建一个实体:

示例:

public class MyClass
{
    public static MyClass MyClassFactory(IDataRecord …
Run Code Online (Sandbox Code Playgroud)

c# io asynchronous async-await .net-4.5

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

.net-4.5 ×1

async-await ×1

asynchronous ×1

c# ×1

io ×1