AsParallel写入同一对象

时间:2018-12-19 13:18:37

标签: c# multithreading

我有一个带有键-值对的字典,其中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对象,而在某些文件中则包含整个详细信息列表。 enter image description here enter image description here 它应该是一个xml文件的一个详细信息。 有谁知道为什么会这样?

0 个答案:

没有答案