I had a problem with refreshing file list after deleting a file. When I gave command to delete file, the exception was thrown because the refresh method tried to access a file that was supposed to be deleted.
After some thought and debuging I came to conclusion that problem was in a fact that system needs some time to delete a file. And I solve it like this:
//Deleting file
System.Threading.Thread.Sleep(2000);
//Refreshing list
and it worked fine.
My question is
Is there a more elegant way to wait for system do delete file and then continue with code...?
This works for me:
public static void DeleteFile(String fileToDelete)
{
var fi = new System.IO.FileInfo(fileToDelete);
if (fi.Exists)
{
fi.Delete();
fi.Refresh();
while (fi.Exists)
{ System.Threading.Thread.Sleep(100);
fi.Refresh();
}
}
}
I find that most of the time, the while loop will not be entered.