相关疑难解决方法(0)

什么时候"太多"异步并等待?所有方法都应该返回Task吗?

我正在构建一个项目并使用async和await方法.每个人都说异步应用程序是从头开始构建的,那么你真的应该有任何同步方法吗?如果所有方法都返回一个Task,那么你可以异步使用它吗?

让我们举一个简单的例子,我在使用Sql将数据加载到集合中,这里有一些代码.

此代码使用ExecuteQueryAsync方法从表中加载数据,该方法GetQuery构造SQL,但调用GetTableColumns.生成并执行SQL后,我遍历集合并通过调用填充每个对象GetDataFromReader.

我的非异步方法应该是异步的吗?我是否在考虑过多的编程同步方式并缺少某些东西?

public async Task<ICollection<MyObject>> ExecuteQueryAsync(Module module, List<SqlParameter> parameters)
{
    var result = new Collection<MyObject>();
    var query = GetQuery(module);

    using (var conn = new SqlConnection(_context.Database.Connection.ConnectionString))
    {
        await conn.OpenAsync();

        using (var cmd = new SqlCommand(query, conn))
        {
            if (parameters != null)
                cmd.Parameters.AddRange(parameters.ToArray());

            using (var dr = await cmd.ExecuteReaderAsync())
            {
                while (await dr.ReadAsync())
                {
                    result.Add(GetDataFromReader(module, dr));
                }

            }
        }

    }

    return result;
}

public string GetQuery(Module module)
{
    return "SELECT " + …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net asynchronous async-await

10
推荐指数
2
解决办法
5087
查看次数

标签 统计

.net ×1

asp.net ×1

async-await ×1

asynchronous ×1

c# ×1