2009-04-24 5 views
1

Dans mes applications (VB6 et C# 2008) sous Windows 2003 deux fois maintenant, j'ai observé un comportement similaire concernant la suppression de dossiers contenant des fichiers. Mon code va créer des dossiers temporaires et générer des fichiers dans ce dossier pour le traitement ultérieur. Une fois le traitement terminé, mon code va essayer de supprimer le dossier temporaire généré. L'opération de suppression se termine sans erreur. Toutefois, après une inspection plus approfondie, vous pouvez voir que le dossier existe toujours dans Windows Explorer. Tenter de parcourir ce dossier entraîne une erreur d'autorisation refusée. Plus tard, l'application va traiter une autre série de fichiers et essayer de créer le dossier temporaire à nouveau. Malheureusement, la précédente Suppression en attente n'a pas encore fini, donc essayer de créer à nouveau le dossier entraîne une erreur d'autorisation refusée. Le dossier n'est pas vraiment supprimé jusqu'à ce que je ferme mon application. Dès que l'application est fermée, le dossier est supprimé. Pourquoi les opérations de suppression de mon dossier ne sont-elles pas validées tant que l'application n'est pas fermée?Supprimer la file d'attente dans NTFS?

+0

Une question supplémentaire. Ne pas supprimer un dossier avec des fichiers verrouillés activement des fichiers déclencher une exception plutôt que de mettre en file d'attente une opération de suppression? –

+0

oui, il devrait. voir http://stackoverflow.com/questions/3764072/c-win32-how-to-wait-for-a-pending-delete-to-complete – Henrik

Répondre

0

Je me demande - est-il possible que vous ayez accidentellement conservé un verrou sur ce répertoire? Cela expliquerait pourquoi le répertoire ne peut pas être supprimé tant que votre application n'est pas partie.

Il existe quelques outils - essayez SysInternals - qui liste les verrous de fichiers/répertoires. Essayez votre application et voyez si elle conserve un verrou. Je pense que vous pouvez alors enlever ce verrou avec force - voyez alors si le répertoire disparaît immédiatement.

+0

Une question supplémentaire. Ne pas supprimer un dossier avec des fichiers verrouillés activement des fichiers déclencher une exception plutôt que de mettre en file d'attente une opération de suppression? –

+0

Ce n'est pas la réponse ... – Henrik