public async Task<PagerModel<ResultModel>> GetList()
{
PagerModel<ResultModel> result = new PagerModel<ResultModel>();
sql = "";
sqlCount = "";
using (IDbConnection connection = ConnectionManager.OpenConnection())
{
var temp = await connection.QueryAsync<ResultModel>(sql);
result.TotalCount = await connection.ExecuteScalarAsync<int>(sqlCount);
result.PagerList = temp.Distinct().ToList();
result.TotalPageCount = (int)Math.Ceiling((double)result.TotalCount / pageSize);
connection.Close();
connection.Dispose();
}
return result;
}
请问上面代码为什么不异步执行呢,两个异步方法每个在300 -400ms,现在接口监测耗时共900ms左右。该怎么写呢,万分感谢!
var tempTask = connection1.QueryAsync<ResultModel>(sql);
var totalTask = connection2.ExecuteScalarAsync<int>(sqlCount);
await Task.WhenAll(temtask,totaltask);
result.TotalCount=totalTask .result;
result.PagerList=tempTask.result;
谢谢,你这个看着就靠谱。现在开了两个线程 然后WaitAll,没你这种简洁。我问的问题那种写法会并行执行嘛
@去海边生活:
var temp = await connection.QueryAsync<ResultModel>(sql);
result.TotalCount = await connection.ExecuteScalarAsync<int>(sqlCount);
你说这种呀,自然不会呀,得等QueryAsync完成后,才执行ExecuteScalarAsync呀。不然await有什么用了,对不
@czd890: 谢谢
大神啊,sql加了group by,sql查询器会很快 大概400ms,代码执行会超级慢 4.5s左右。dapper,mysql5.6.您有遇到相关问题吗
async await 碰到 await 就同步执行了,这个要谨记。
好的 谢谢
有人吗
– 去海边生活 5年前