2010-02-02 5 views
6

J'utilise File.Copy (source, dest, true) pour copier un fichier local à distant avec option d'écrasement. Dans mon cas, le dest est un lecteur réseau mappé:File.Copy() sync ou asycn?

File.Copy(source, dest, true); 
UnMapDrive(); // unmap the network drive 

Le problème que j'ai ensuite est que le fichier source peut être verrouillé de sorte que je ne pouvais pas supprimer le fichier local.

Je suppose qu'il peut être provoqué par l'appel File.Copy(). Je ne sais pas si celui-ci est synchronisé ou pas. En d'autres termes, le fichier source est-il publié après l'appel?

Répondre

3

Oui, il est libéré et la méthode File.Copy bloque l'exécution jusqu'à la fin de l'opération de copie.

Le fichier peut être disponible en lecture mais verrouillé pour suppression.

Vérifiez avec Process Monitor quel processus verrouille le fichier source.

+0

Vous avez raison. J'ai trouvé un autre bug dans mon code (d'autres endroits) et c'est une raison pour causer le problème. File.Copy() est OK pour libérer les fichiers. Merci! –