可以异步压缩文件流列表吗?

时间:2018-03-08 19:05:38

标签: c# .net asynchronous zip

我正在编写一个需要获取文件流列表并将其全部压缩的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将抛出一个错误,即在前一个条目仍然打开时无法创建条目。

0 个答案:

没有答案