Quote Originariamente inviata da ravamauro Visualizza il messaggio
se i file sono aperti (ad esempio in un pdf reader) gestisco l'errore tramite try e catch chiedendo all'utente se vuole chiudere il reader e riprovare a spostare il file ma come faccio a far ripartire il ciclo for each o devo rimettere la move nel catch ?
Credo che la soluzione più semplice sia quella di innestare due cicli, uno dentro l'altro: il ciclo più esterno enumera i file da elaborare, mentre quello più interno si ripete fino a quando l'operazione da eseguire sul file specifico va a buon fine.

Fino a quando si verificano eccezioni nel ciclo più interno, l'operazione viene così ripetuta.

Quando l'operazione va a buon fine o viene abbandonata, si torna nel ciclo esterno che passa eventualmente al file successivo.

Quote Originariamente inviata da ravamauro Visualizza il messaggio
Secondo problema come distinguo un errore di file aperto da un errore di disco pieno a parte la stampa dei messaggi?
Puoi usare forse la proprietà HResult, che dovrebbe essere diversa da caso a caso.

Ciao!