【发布时间】:2023-11-22 06:32:01
【问题描述】:
有 2 种方法,一种方法依赖于另一种方法。我需要将几个文件并行发送到服务器,首先来自服务器的答案,然后将其发送到DownloadFileAsync 方法,并对其余文件执行相同操作(无需立即等待所有答案,发送它们(答案来自服务器)到DownloadFileAsync() 方法,因为它们被接收)。
public async Task CompressAllFilesAsync(List<UserFile> files, string outputpath)
{
await UploadAllFilesAsync(files);
await DownloadAllFilesAsync(files, outputpath);
}
public async Task UploadAllFilesAsync(List<UserFile> files)
{
IEnumerable<Task> allTasks = files.Select(async (file, i) =>
files[i].FileLink = await UploadFileAsync(files[i])
);
await Task.WhenAll(allTasks);
}
public async Task DownloadAllFilesAsync(List<UserFile> files, string outputpath)
{
IEnumerable<Task> allTasks = files.Select((file, i) =>
DownloadFileAsync(files[i].FileLink,
Path.Combine(outputpath, $"{files[i].FileName}")
));
await Task.WhenAll(allTasks);
}
现在程序在运行DownloadAllFilesAsync() 方法之前等待来自服务器的所有答案(可下载文件的链接)。
【问题讨论】:
标签: c# visual-studio asynchronous task-parallel-library webrequest