ho risolto cosi:
string[] Immagini = new string[myDir.GetFiles().Length];
for (int i = 0; i < myDir.GetFiles().Length; i++)
{
Immagini[i] = myDir.GetFiles()[i].Name;
}
for (int i = 0; i < Immagini.Length; i++)
{
System.IO.FileInfo myFile = new System.IO.FileInfo(mySett.my_phis_root + "public\\upload_file\\" + Immagini[i]);
if (myFile.Exists)
{
myFile.Delete();
}
}
in pratica prima ciclavo su myDir.GetFiles().Length e quando cancellavo l'immagine mi faceva confusione con gli indici e non cancellava tutte le immagini; svincolando l'array dal contenuto della cartella tutto funziona.