При чтении поста Запуск заданий В цикле foreach использует значение последнего элемента ) помеченный ответ имеет большой смысл. Автор создал новую переменную, pathCopy, для использования в задаче. Мой вопрос, это необходимо только при использовании Task.ContinueWith ()?
Вот пример:
private void GetAuditFiles()
{
_auditFiles = new ConcurrentBag<AuditFile>();
var tasks = new List<Task>();
foreach (var auditFile in Directory.GetFiles(_properties.AuditFileOutputPath))
{
var taskfile = auditFile;
tasks.Add(Task.Factory.StartNew(() =>
{
var file = DeserializeProcessProperties<AuditFile>(File.ReadAllText(taskfile));
file.filename = Path.GetFileName(taskfile);
_auditFiles.Add(file);
}));
}
Task.WaitAll(tasks.ToArray());
}
Нужно ли устанавливать переменную наподобие "var taskfile = audFile;"?
Примечание. Я использую обновленную версию VS 2017 и его компилятор C #.