[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的方法后,是不是因为事务无法处理多线程导致事务失效,插入的数据不能被回滚删掉?
我的理解是[Transaction(TransactionMode.Requires)]
只能控制当前线程的事务
BatchCreate方法属于当前线程,然后这个方法里面又有多线程,这个多线程应该属于BatchCreate方法线程的子线程吧,应该属于当前线程吧,这是我的理解
@灬丶: Tasks.Parallel 是在新建的线程中执行
@dudu: 你有资料吗?我研究下
Tasks.Parallel是在多个线程中运营代码.
啥意思,运营代码?