a-second-operation-started-on-this-context-before-a-previous-operation-completed

Posted shanqiu861001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了a-second-operation-started-on-this-context-before-a-previous-operation-completed相关的知识,希望对你有一定的参考价值。

  分页统计时出现上述错误,错误写法:

var taskList = query.OrderBy(a => a.Seq).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();
var taskCount = query.CountAsync();

var list = await taskList;
var count = await taskCount;

  开始觉得既然是异步,那同时执行效率会更高,现实是打脸的。。。好吧,只能换个写法

var list =await query.OrderBy(a => a.Seq).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();
var count =await query.CountAsync();

  异步等待第一个执行完再执行第二个。那异步的意义是什么呢,这样跟同步花的时间并没有减少,的确,在一次请求中并没有提高效率,提高的只是web程序的吞吐量,异步后将由其它线程执行,web线程可以继续处理新的请求。

  为什么2个同时执行会出错呢?我想应该是dbcontext是线程不安全的原因吧,但有一点奇怪的是本地执行不会报错,而发布后生成环境就经常出现这个错误,这是什么原因还请知道的大神赐教!!!

以上是关于a-second-operation-started-on-this-context-before-a-previous-operation-completed的主要内容,如果未能解决你的问题,请参考以下文章