【问题标题】:Thread in zip files downloadzip文件中的线程下载
【发布时间】:2016-07-05 15:04:51
【问题描述】:

我要做的是创建一个 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 文件创建成功后再进行下载?

【问题讨论】:

  • 通常这需要很长时间,让您的用户离开,然后通过电子邮件通知他 zip 已完成,这里是下载链接...

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


【解决方案1】:

请添加以下语句

Thread.Sleep(5000); //这将使线程休眠5秒。

声明之后

zip.CreateEntryFromFile(filePath, Name);

如果问题仍然存在,请增加睡眠时间。

【讨论】:

  • 真是个坏主意!避免它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2015-07-21
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多