【发布时间】:2015-07-07 06:51:14
【问题描述】:
我正在尝试将文件异步上传到 S3 存储桶。我可以使用以下代码成功地做到这一点。
我似乎无法弄清楚如何同时处理两个具有相同返回类型的不同方法。
UploadImages 和 UploadAttachments 都返回 IEnumerable 的 EntityUploadResult。如何并行执行它们并在它们都完成后返回结果?
public async Task<List<EntityUploadResult>> BulkUploadFiles(IEnumerable<BulkUploadFile> files)
{
var results = new List<EntityUploadResult>();
var images = UploadImages(files.Where(x => x.FileType == BulkFileType.Image).AsEnumerable());
var attachments = UploadAttachments(files.Where(x => x.FileType == BulkFileType.Attachment).AsEnumerable());
results.AddRange(await images);
results.AddRange(await attachments);
return results;
}
private async Task<IEnumerable<EntityUploadResult>> UploadImages(IEnumerable<BulkUploadFile> files)
{
return await Task.WhenAll(files.Select(i => UploadImage(i)));
}
private async Task<IEnumerable<EntityUploadResult>> UploadAttachments(IEnumerable<BulkUploadFile> files)
{
return await Task.WhenAll(files.Select(i => UploadAttachment(i)));
}
【问题讨论】:
标签: c# .net asynchronous async-await