Jeg har nu timet de forskellige sletning-algoritmer jeg kunne komme i tanke om (kan godt poste koden, men det fylder lidt meget). Din metode ovenfor ser hveken ud til at være specielt hurtig eller langsom i forhold til de andre. Jeg gætter derfor på at der et to faktore der bestemmer hastigheden:
1) Hvor hurtigt man kan finde filerne
2) Hvor hurtigt det tager at slette en enkelt fil.
Hvad begge faktore angår er din kode så hurtig som man kan forvente det.
MEN:
.NET's Delete() metoder sletter ikke til papirkurven. For at gøre det skal man have fat på noget DllImport; Jeg har dog ikke kigget på dette eftersom at det er min erfaring at det tager længere tid at slette til papirkurven end blot at slette helt.
Et alternativ du kunne overveje, er at flytte filerne til en anden folder (på samme drev!). Denne kunne du så slette senere via Windows. Jeg ved ikke om der er vundet noget ved dette - det smager i hvert fald lidt af at slete til papirkurven... Selvom jeg dog mener at der er mere overhead på det sidste.
Endnu et alternativ kunne være at slette filerne løbende som de oprettes i stedet for at gøre det i ét hug efter et stykke tid. Det ville få processen til at virke langt mindre tung. Nu ved jeg ikke hvor filerne kommer fra og om de skal bruges til noget før de slettes, så jeg ved ikke om dette er en farbar vej. Men hvis du vælger denne så kan det gøre ved at du opsætter en FileSystemWatcher til at kolde øje med dit upload-dir.
Du kunne måske finde lidt inspiration i dette her spørgsmål:
http://www.eksperten.dk/spm/805185