zip文件中的线程下载

时间:2016-07-05 06:39:58

标签: asp.net asp.net-mvc multithreading

我要做的是创建一个zip文件并下载这些文件。 这是我的控制器

     public FilePathResult Download(string Name)
         {
        string f1=null;
        try
        {
             f1 = _dbBackupServiceService.DownloadBackupFile(Name);

        }
        catch (Exception ex)
        {

        }

            return File(f1, "application/zip", Name + ".zip");
  }

服务层也是这样的

    public string  DownloadBackupFile(string Name)
    {

        string backupFolder = HttpContext.Current.Server.MapPath("~/DbBackup");
        string filePath = backupFolder + "\\" + Name;
        string zipFilePath = filePath.Substring(0, (filePath.Length - 3)) + "zip";

        var backupFileName = Path.GetFileNameWithoutExtension(filePath);
        var zipFileName = Path.GetFileName(zipFilePath);

          if (File.Exists(zipFilePath))
        {

        }
        else
        {
            ZipArchive zip = ZipFile.Open(zipFilePath, ZipArchiveMode.Create);
            zip.CreateEntryFromFile(filePath, Name);



        }
        return zipFilePath;



    }

我面临的问题是当我点击那些未创建zip文件的文件的下载操作时。当下载线程运行时,处理器将连续创建zip文件,并且浏览器显示错误。而已经创建的zip文件成功下载。如何在下载之前成功创建zip文件?

1 个答案:

答案 0 :(得分:-1)

请添加以下声明

Thread.sleep代码(5000); //这将使线程休眠5秒钟。

之后

zip.CreateEntryFromFile(filePath,Name);

如果您仍然遇到问题,请增加睡眠时间。