阅读帖子时,在 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 = auditFile;”这样的变量?
注意:我使用的是 VS 2017 的更新版本及其 C# 编译器。