您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

【C#】Task.Factory.StartNew中异常,数据库连接对象断开问题

bubuko 2022/1/25 19:25:39 dotnet 字数 2575 阅读 1096 来源 http://www.bubuko.com/infolist-5-1.html

场景:订单生成之后,许多后续操作使用Task.Factory.StartNew进行,例如调用,推荐人所推荐用户下单后,增加其计算优惠券推荐人数量。Task.Factory.StartNew偶尔抛出异常:System.InvalidOperationException: ExecuteReader 要 ...

场景:订单生成之后,许多后续操作使用Task.Factory.StartNew进行,例如调用,推荐人所推荐用户下单后,增加其计算优惠券推荐人数量。Task.Factory.StartNew偶尔抛出异常:System.InvalidOperationException: ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。

 

原因:

1、Task.Factory.StartNew中调用的是创建订单线程Order_MainBLL类的属性this.DBSession,去执行业务。也就是使用了同一个数据库连接对象this.DbContext。

2、Task.Factory.StartNew创建了任务,在线程池空闲时,才会执行。任务开始时,原创建订单线程已经结束,关闭了数据库连接对象。

 

解决:

使用不同的数据库连接对象。
                            var _DBSession= new Order_MainBLL().DBSession;
                             try
                             {
                                 _DBSession.IOrder_MainDAL.SetOrderSampleConfirmList(oid,isRepeat:1);
                             }
                             catch (Exception ex)
                             {
                                 LogHelper.Instance.Error("余额支付后生成待确认出错:", ex);
                             }

【C#】Task.Factory.StartNew中异常,数据库连接对象断开问题

原文:https://www.cnblogs.com/lanofsky/p/13741355.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶