次のコードは、13、14、15、16、つまり順序に関係なく各番号がイベント ログに 1 回書き込まれると予想しているときに、14、15、16、16 のイベント ログを生成します。
問題は、なぜ 13 がなく、16 が重複しているのかということです。
List<int> webReports = new List<int>{13,14,15,16};
List<Task> tasks = new List<Task>();
foreach (int webReportNo in webReports)
{
tasks.Add(Task.Factory.StartNew(() => DoStuff(webReportNo)));
}
private static void DoStuff(int webReportNo)
{
//Write webReportNo to event log.
}