我创建了一个结构,比如说AStruct
,并覆盖它的ToString()
方法。然后我写了一个并行返回一些AStruct
并将它们放在一个列表中,这样我就可以使用 aStreamWriter
来输出它们,比如
StreamWriter sw = new StreamWriter(@"ABC.txt");
StringBuilder sb = new StringBuilder();
List<AStruct> AList = new List<AStruct>();
Parallel.For(0,10,i => // generate 10 AStruct(s)
{
AList.Add(DoSomethingThatReturnsAStruct);
});
for(int i =0; i< AList.Count();i++) //put in a StringBuilder
{
sb.AppendLine(AList[i].ToString());
}
sw.Write(sb.ToString());
sw.Close();
问题是输出文件只打印了 AList 的 7/8 行,而 AList 实际上得到了所有 10 个元素。我想知道这是否与 StringBuilder 的线程安全有关。有人可以解释为什么不是所有的行都输出吗?