error in deleting a file with File.Delete() method

陌路散爱 提交于 2019-12-29 02:09:12

问题


I have written a winform application in visual studio 2010.In one of the forms the user can browse the local system and select an image, so the application will copy that image(with File.Copy() method) to its folder. the problem is when the user wants to delete that image(File.Delete() method),I receive an error like this :

cannot delete this file because it is used by another process.

I do not know what this error says because i do not use the image files in other processes.


回答1:


cannot delete this file because it is used by another process.

The message isn't terribly helpful to programmers because when it happens when you develop code, that other process is almost always your process.

This is very likely to occur with image files, creating a Image or Bitmap object from an image file puts a lock on the file. The lock is created because GDI+ creates a memory-mapped view on the file content, a strong optimization that keeps the bitmap data out of the paging file. Matters a great deal on large images, they can contain many megabytes worth of pixel data.

That lock is kept until you explicitly call its Dispose() method in your code. So be sure that was done before you try to save the image back. In rare cases you may need to create a copy of the image to allow you to dispose the original, use the Bitmap() constructor overload that takes an Image argument.




回答2:


What is happening is that when we copy a file from C# code and paste it, even after that program maintains a link/information to original/copied file. This will not happen to files not copied by program or files already present in your folder.

An alternative of this is to fire copy shell/dos command. A way to do that is present in this article

normal copy command in dos is like

copy originalfilenamewithpath destinationfilenamewithpath.

To know more about copy command go to dos and write copy /? and press enter.




回答3:


Agree with what Conrad suggested, though there are edge cases where Process Explorer may not be reliable, alternatively you can try Unlocker



来源:https://stackoverflow.com/questions/10459192/error-in-deleting-a-file-with-file-delete-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!