首页 新闻 会员 周边

多线程对事物的影响

0
[待解决问题]

[Transaction(TransactionMode.Requires)]
public void BatchCreate(IList<Task> tasks)
{
lock(_lock)
{
//分批次插入,否则会出“传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求”异常
List<List<Task>> groupList = tasks.GetListGroup(75);
System.Threading.Tasks.Parallel.For(0, groupList.Count, s =>
_taskDao.BatchInsert(groupList[s])
);
}
}
在使用Tasks.Parallel的方法后,是不是因为事务无法处理多线程导致事务失效,插入的数据不能被回滚删掉?

灬丶的主页 灬丶 | 初学一级 | 园豆:2
提问于:2019-02-14 14:35
< >
分享
所有回答(2)
0

我的理解是[Transaction(TransactionMode.Requires)]只能控制当前线程的事务

dudu | 园豆:31007 (高人七级) | 2019-02-14 15:04

BatchCreate方法属于当前线程,然后这个方法里面又有多线程,这个多线程应该属于BatchCreate方法线程的子线程吧,应该属于当前线程吧,这是我的理解

支持(0) 反对(0) 灬丶 | 园豆:2 (初学一级) | 2019-02-14 15:06

@灬丶: Tasks.Parallel 是在新建的线程中执行

支持(0) 反对(0) dudu | 园豆:31007 (高人七级) | 2019-02-14 15:46

@dudu: 你有资料吗?我研究下

支持(0) 反对(0) 灬丶 | 园豆:2 (初学一级) | 2019-02-14 15:48
0

Tasks.Parallel是在多个线程中运营代码.

吴瑞祥 | 园豆:29449 (高人七级) | 2019-02-14 17:19

啥意思,运营代码?

支持(0) 反对(0) 灬丶 | 园豆:2 (初学一级) | 2019-02-14 17:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册