我最近偶然发现了这个问题:在我的应用程序中,我为用户提供了从列表中下载多个文件的选项,方法是将它们放入.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);
。这不会每次都发生,据我所知,这是相当随机的。
任何人都可以在解决方案中暗示我吗?