我正在编写一个需要获取文件流列表并将其全部压缩的Web服务。我写了一些代码来做到这一点,但问题是它是顺序的,所以当试图压缩很多文件时,它需要太长时间。即使文件只有20kb,~10个文件也需要2秒钟。是否有某种方法可以同时压缩所有文件?这就是我现在所拥有的:
using (ZipArchive archive = new ZipArchive(some_stream, ZipArchiveMode.Create, true))
{
foreach (var file in list_of_files)
{
ZipArchiveEntry zipEntry = archive.CreateEntry(file.name, CompressionLevel.Optimal);
using (Stream zipEntryStream = zipEntry.Open())
{
await file.stream.CopyToAsync(zipEntryStream).ConfigureAwait(false);
}
}
}
如果我尝试创建一个任务列表而不是等待,ZipArchive将抛出一个错误,即在前一个条目仍然打开时无法创建条目。