当在c#中启动内部任务时,foreach或并行foreach中的所有元素都不会循环。

问题描述 投票:-3回答:1
var seldir = new DirectoryInfo(path); Parallel.ForEach(seldir.EnumerateFiles(), files => { if (files.Extension.Equals(".txt")) { Task text = Task.Factory.StartNew(() => opentext(files.Name)); } else if (files.Extension.Equals(".doc")) { Task doc = Task.Factory.StartNew(() => opendoc(files.Name)); } });
一旦代码找到一个文本文件,它将在if条件下启动任务以调用另一个函数,以后无论如何都不会。枚举的文件,即使找到了.doc扩展名文件,代码也不会到达elseif部分。我需要打开该文件夹中找到的所有文本和doc文件。请帮助。

var seldir =新的DirectoryInfo(path); Parallel.ForEach(seldir.EnumerateFiles(),files => {if(files.Extension.Equals(“。txt”)){任务文本= Task.Factory.StartNew(()=> opentext(...

c# foreach task parallel.foreach taskscheduler
1个回答
0
投票
我现在不在计算机上进行测试,但是我

认为

这可能是任务的问题,所有任务的files评估都推迟了,因此最终都以相同的files对象。
© www.soinside.com 2019 - 2024. All rights reserved.