我最近偶然发现了这个问题:在我的应用程序中,我为用户提供了从列表中下载多个文件的选项,方法是将它们放入 .zip 文件夹然后下载。我自然希望下载完成后删除该 .zip 文件夹。这是我的方法:
try {
Response.Clear();
Response.ContentType = "application/zip";
Response.AddHeader("Content-Disposition", "attachment; filename=filename.zip");
Response.TransmitFile(archive);
Response.Flush();
success = success && true;
return success;
} catch {
return false;
} finally {
System.IO.File.Delete(archive);
Response.End();
}
现在,布尔值只是表示下载是否成功,我认为它们现在并不重要。我认为这是如何工作的,程序首先尝试将文件传输到客户端,如果没有发生错误,它会跳过 catch 块,只有在下载后才会删除archive
文件。
但是,我经常收到一条错误The process cannot access the file because it is being used by another process.
消息System.IO.File.Delete(archive);
。这并不是每次都会发生,据我所知,这是相当随机的。谁能提示我解决方案?