NHibernate multi-threading issue (多线程问题)

int limitTimes;
      int.TryParse(ConfigurationManager.AppSettings["LimitTimes"], out limitTimes);
      var redoPurchaseEntityList =
        this.redoPurchaseEntityRepository.FindByExpression(p => p.SendNumber < limitTimes).ToList();
      if (redoPurchaseEntityList.Count == 0)
      {
          return;
      }
      Parallel.ForEach(
          this.redoPurchaseProvideList,
          redoPurchase =>
          {
              var task = new Task(() => redoPurchase.RedoPurchase(redoPurchaseEntityList));
              task.StartAndContinueWith();
          });

上面代码主要是从数据库中查询出一个表的list集合然后多线程并行查找同一个list,会得到一个错误信息

There is already an open DataReader associated with this Command which must be closed first.
at System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)

因为用的是一个session,导致读取错误多线程不可互用同一个session.

可参考 http://stackoverflow.com/questions/7886260/nhibernate-multi-threading-issue  

posted @   多远才是未来  阅读(368)  评论(0编辑  收藏  举报
编辑推荐:
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· 从 Windows Forms 到微服务的经验教训
点击右上角即可分享
微信分享提示