【发布时间】:2016-11-30 19:18:46
【问题描述】:
今天我遇到了一个我无法解释的奇怪现象。有一个网页在gridview中有很多行,需要一一保存到数据库和XML文件中。我最终使用了Parallel.ForEach,因为行之间没有关系,所以它们可以独立执行。代码基本上是这样的:
Parallel.ForEach(gvWithData.Rows.Cast<GridViewRow>(), row =>
{
if (row.RowType == DataControlRowType.DataRow)
{
// do some logic and stuff...
var type = new Object { ... };
// save to the database
type.Save();
// retrieve the saved item from the database again
// since we need some autoincrement values from the db
var typeAfterSave = TypeManager.GetFromDb();
// create a custom XML from the object
XmlManager.CreateXml(typeAfterSave);
}
}
为什么当我用旧的foreach 替换Parallel.ForEach 并且我什么都没改变时,这段代码的工作方式会有什么不同?
不同之处在于,在第一种情况下创建 XML 的文化与第二种情况不同,我一点也不知道为什么。
有什么建议吗?
【问题讨论】:
-
文化可以存储为本地线程。如果您更改了活动线程的区域性,它不会影响线程池线程。
标签: c# asp.net cultureinfo parallel.foreach