Copy & Delete error: using by another process
Bonjour,
J'ai un traitement dans ma page web qui doit renommer un fichier et un autre traitement similaire qui doit déplacer le fichier.
Pour des questions de pertes de données possible, je ne fais pas de "Move" mais j'utilise "Copy" puis "Delete"
Le problème est que lors que je copy le fichier ciblé et que je le delete, lors du delete, une exception remonte comme quoi mon fichier est utilisé par un autre processus (la copy).
J'aimerais savoir si vous avez des solutions pour effectuer ces 2 manipulations successivement sans lever cette exception.
j'ai trouvé une méthode qui permet de régler ce problème mais rien n'y fait, 1 fois 2, ça plante..
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
try
{
System.IO.File.Copy(fileori,filedest)
if (WaitForFile(fileori))
System.IO.File.Delete(filePathSrc + fileName);
}
catch (Exception)
{
//exception
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
bool WaitForFile(string fullPath)
{
int numTries = 0;
while (true)
{
++numTries;
try
{
// Attempt to open the file exclusively.
using (FileStream fs = new FileStream(fullPath,
FileMode.Open, FileAccess.ReadWrite,
FileShare.None, 100))
{
fs.ReadByte();
// If we got this far the file is ready
break;
}
}
catch (Exception ex)
{
if (numTries > 20)
{
// trace
return false;
}
// Wait for the lock to be released
System.Threading.Thread.Sleep(700);
}
}
//trace
return true;
} |
Merci.