c# - AsParallel 写入同一个对象
问题描述
我有一个带有键值对的字典,其中值是一个复杂的对象。由于速度的原因,我使用了 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}
它们都应该返回一个对象。稍后将被序列化为 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; }
}
}
此详细信息列表仅适用于其他一些情况,但在此特定情况下应仅包含一个详细信息。在并行期间,不同的线程在那里写入,因此在某些文件中我没有详细信息对象,而在其中一些文件中没有完整的详细信息列表。 它应该是一个 xml 文件的一个细节。有谁知道为什么会这样?
解决方案
推荐阅读
- javascript - react中的onClick事件在选择时是否有优先级?如果是,你如何改变它们?
- php - Laravel 5.7:Laravel 数据表未与 Composer 一起安装
- php - 在mysql中显示不同时间范围内的不同数据
- c# - 我们如何防止 Rad Autocomplete 接受重复输入?
- php - 我的 sql 语法错误,但我不知道在哪里
- c# - 如何在 Xamarin Forms 中复制 iOS 开关的功能,使其在 iOS 和 Android 中看起来相同?
- ios - ios objective c 小通知横幅,用于没有互联网连接并返回在线,就像 iphone 的 youtube 应用程序一样
- ios - iOS Audio 如何制作颤音或颤音效果
- ios - 是否可以让来自 2 个不同故事板的 2 个视图控制器同时在屏幕上处于活动状态?
- r - 根据数据框中的自定义规则计算总和