I have a function that always creates a directory and put in it some files (images).
When the code runs first time, no problem. Second time (always), it gets an error when I have to delete the directory (because I want to recreate it to put in it the images). The error is “The process cannot access the file ‘…’ because it is being used by another process”. The only process that access to this files is this function.
It’s like the function “doesn’t leave” the files.
How can I resolve this with a clear solution?
Here a part of the code:
String strPath = Environment.CurrentDirectory.ToString() + "\\sessionPDF";
if (Directory.Exists(strPath))
Directory.Delete(strPath, true); //Here I get the error
Directory.CreateDirectory(strPath);
//Then I put the files in the directory
If your code or another process is serving up the images, they will be locked for an indefinite amount of time. If it’s IIS, they’re locked for a short time while being served. I’m not sure about this, but if Explorer is creating thumbs for the images, it may lock the files while it does that. It may be for a split second, but if your code and that process collide, it’s a race condition.
Be sure you release your locks when you’re done. If the class implements IDisposable, wrap a using statement around it if you’re not doing extensive work on that object:
…which will close the object afterwards and the file will not be locked.