C# 在Main()中循环任务

C# 在Main()中循环任务,c#,loops,asynchronous,async-await,task,C#,Loops,Asynchronous,Async Await,Task,我有这个 foreach (FileInfo flInfo in dir.GetFiles()) { String name = flInfo.Name; Console.WriteLine("{0, -30:g} ", name); Task<DataTable> mergeTable = processFile(name); t

我有这个

foreach (FileInfo flInfo in dir.GetFiles())
            {
                String name = flInfo.Name;
                Console.WriteLine("{0, -30:g} ", name);
                Task<DataTable> mergeTable = processFile(name);
                 table.Merge(mergeTable.Result);
            }
foreach(dir.GetFiles()中的FileInfo-flInfo)
{
字符串名称=flInfo.name;
WriteLine({0,-30:g}),名称);
任务合并表=进程文件(名称);
table.Merge(mergeTable.Result);
}
如何使用不同的变量mergeTable循环此任务

更具体地说明我的要求 目前我正在这样做

Task<DataTable> mergeTable01 = processFile("filename1.txt");
Task<DataTable> mergeTable02 = processFile("filename2.txt");
Task<DataTable> mergeTable03 = processFile("filename3.txt");
Task<DataTable> mergeTable04 = processFile("filename4.txt");

Task.WaitAll(mergeTable01,mergeTable02,mergeTable03,mergeTable04);

table.Merge(mergeTable01.Result);
table.Merge(mergeTable02.Result);
table.Merge(mergeTable03.Result);
table.Merge(mergeTable04.Result);
Task mergeTable01=processFile(“filename1.txt”);
任务mergeTable02=processFile(“filename2.txt”);
任务mergeTable03=processFile(“filename3.txt”);
任务mergeTable04=processFile(“filename4.txt”);
Task.WaitAll(mergeTable01、mergeTable02、mergeTable03、mergeTable04);
表.Merge(mergeTable01.Result);
表.合并(合并表02.结果);
表.合并(合并表03.结果);
表.合并(合并表04.结果);

如何循环此重复任务并最终合并数据表?

如果您希望启动所有任务以进行异步处理,那么您需要,如Kevin所说,启动并将其添加到
列表中,然后调用
任务。在该集合上调用
任务

List<Task<DataTable>> dataTableTasks = new List<Task<DataTable>>();
foreach (FileInfo flInfo in dir.GetFiles())
{
    String name = flInfo.Name;
    Console.WriteLine("{0, -30:g} ", name);
    Task<DataTable> mergeTable = processFile(name);
    dataTableTasks.Add(mergeTable);
}

await Task.WhenAll(dataTableTasks);

foreach(Task<DataTable> dataTableTask in dataTableTasks)
{
    table.Merge(await dataTableTask);
}
List dataTableTasks=new List();
foreach(dir.GetFiles()中的FileInfo flInfo)
{
字符串名称=flInfo.name;
WriteLine({0,-30:g}),名称);
任务合并表=进程文件(名称);
dataTableTasks.Add(合并表);
}
wait Task.WhenAll(dataTableTasks);
foreach(dataTableTasks中的任务dataTableTask)
{
合并(等待dataTableTask);
}

你是否尝试将任务放入循环中?嗨,Alexei,你是什么意思?你问过如何循环,Alexei问过你是否考虑过循环,你感到困惑吗?使用“不同变量合并表”进行处理的确切含义是什么?这段代码也没有异步功能,也没有使用
asyncwait
Hi-ColinM,我尝试了foreach循环并发布在这里。但是Alexei问我是否在考虑循环。我很困惑。我必须举例说明我需要什么。如何为重复任务创建循环?在循环中,将任务添加到
列表
,然后调用
任务。当所有任务都在该列表上时