私は構造体を作成し、そのメソッドAStruct
をオーバーライドしました。ToString()
次に、いくつかを返し、AStruct
それらをリストに入れるための並列を作成したので、 a を使用しStreamWriter
てそれらを出力できます。
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 のスレッドセーフに関係しているのだろうか。すべての行が出力されない理由を誰かが説明できますか?