我有一个网站,允许用户通过上传表单在服务器上上传一些图片。当这个图片上传时,asp.net服务应该压缩那个特定的图片。压缩图像已经很好,但是我想在压缩完成后从服务器的磁盘上删除原始图像。压缩完成后立即删除图像文件。怎么样?
请花点时间看看下面我的代码:
if (fileUl.PostedFile.ContentType == "image/jpeg" || fileUl.PostedFile.ContentType == "image/png")
{
fileUl.SaveAs(fullPath);
System.Drawing.Image image = System.Drawing.Image.FromFile(fullPath);
compressImage(destinationPath, image, 40);
System.IO.File.Delete(fullPath);
} // nested if
如果我尝试运行上面的代码我得到
System.IO.IOException:该进程无法访问文件[filepath],因为它正在被另一个进程使用。
其实我想到的是,因为我认为这是因为,服务器仍然在压缩时的下一行代码要删除图像的图像(我认为这是它)。所以我的问题是:
如何等待压缩完成,然后运行“删除”代码?
您需要调用它的** Dispose方法**。 一般来说,规则是如果一个对象实现了** IDisposable **接口,那么一旦完成它就应该调用它的** Dispose **方法。这有助于避免使用非托管资源的对象的内存泄漏。做到这一点的最佳方式是将其封装在[using statement](http://msdn.microsoft.com/en-us/library/yh598w02.aspx)中。 – CodeXerox