【发布时间】:2017-08-16 13:26:07
【问题描述】:
是 通过多线程向数据集添加表是线程安全的吗?
List<Action> TestActions = new List<Action>();
Action action1 = new Action(() => Method1(dsDataset));
TestActions.Add(action1);
Action action2 = new Action(() => Method2(dsDataset));
TestActions.Add(action2);
Action action3 = new Action(() => Method3(dsDataset));
TestActions.Add(action3);
try
{
Parallel.ForEach(TestActions, (a) => a());
}
Method1(DataSet ds) {
//excecute a db call and returns datatable
Datatable db ={database query}
ds.Tables.Add(db)
}
Method2(DataSet ds) {
//excecute a db call and returns datatable
Datatable db ={database query}
ds.Tables.Add(db)
}
Method3(DataSet ds) {
//excecute a db call and returns datatable
Datatable db ={database query}
ds.Tables.Add(db)
}
上面的代码是否有效,或者我需要在每个线程尝试添加时锁定数据集? 有没有更好的办法?
【问题讨论】:
标签: multithreading thread-safety dataset parallel.foreach