保存多个文件异步的好处

时间:2018-02-02 02:25:13

标签: c# multithreading asynchronous io .net-core

我在控制器上写了一个操作,将文件保存到磁盘。在.Net Core 2.0上

我看到一些代码保存了这样的文件。

foreach (var formFile in files)
{
    if (formFile.Length > 0)
    {
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await formFile.CopyToAsync(stream);
        }
    }
}

这是保存文件异步但顺序。所以我决定写一点不同

var fileTasks = files.Where(f => f.Length > 0).Select(f => this.SaveFile(f, BASE_PATH));
await Task.WhenAll(fileTasks);

protected async Task SaveFile(IFormFile file, string basePath)
{
    var fileName = Path.GetTempFileName();
    var filePath = Path.Combine(basePath, fileName);

    using (var stream = new FileStream(filePath, FileMode.Create))
    {
        await file.CopyToAsync(stream);
    }
}

假设我将它们全部保存到同一个驱动器中,这样做会有什么好处吗?

我知道我不会在任何线程上阻挡,但光盘上是否还会有瓶颈?或者现代计算机可以一次保存多个文件吗?

0 个答案:

没有答案