我有一个带有键-值对的字典,其中Value是一个复杂的对象。 因为速度,我已经使用AsParalle()。 发生的问题是,在我的某些返回对象中,放置了其他键值对的多个结果。
例如: ResutDict具有多个键值对。
public IDictionary<string, IOutboundResult> ResultDict
{
get { return m_ResultDict; }
set { m_ResultDict = value; }
}
ResultDict.AsParallel()
.WithDegreeOfParallelism(amountOfThreads)
.ForAll(kvp => { DO YOUR THING AND RETURN OBJECT S_Out}
所有这些都应返回一个Object。稍后将其序列化为XML。
public class S_Out : ISerializable
{
private List<details> detailField;
[System.Xml.Serialization.XmlElement("details")]
public List<details> details
{
get { return detailField; }
set { detailField = value; }
}
}
public class details
{
private string idField;
private string countryField;
private string town_cityField;
private string postcodeField;
private List<extract> extractField;
public string id
{
get { return idField; }
set { idField = value; }
}
public string country
{
get { return countryField; }
set { countryField = value; }
}
public string town_city
{
get { return town_cityField; }
set { town_cityField = value; }
}
public string postcode
{
get { return postcodeField; }
set { postcodeField = value; }
}
[XmlElement("extract")]
public List<extract> extract
{
get { return extractField; }
set { extractField = value; }
}
}
此详细信息列表仅在某些其他情况下存在,但在此特定情况下应仅包含一个详细信息。 在并行期间,不同的线程会写入其中,因此在某些文件中我没有detail对象,而在某些文件中则包含整个详细信息列表。 它应该是一个xml文件的一个详细信息。 有谁知道为什么会这样?