2009-09-24 10 views
0

Je développe une application ASP.NET 3.5 multi-thread, pendant le travail avec un certain fichier, je reçois l'exception suivante:Comment savoir quels processus utilisent un fichier sous ASP.NET?

Le processus ne peut pas accéder au fichier parce qu'il est utilisé par un autre processus

Je cherche un moyen de savoir exactement quel processus verrouille ce fichier afin que je puisse arrêter son accès au fichier. OU si c'est compliqué, je veux un moyen de verrouiller le fichier par mon thread afin que d'autres threads/processus ne puissent pas y accéder. Merci.

Répondre

0

Pour verrouiller l'accès à la ressource (la deuxième option que vous suggérez), vous pouvez utiliser un Mutex (une exclusion mutuelle). Je n'ai pas fait tout cela dans .NET, mais il semble y avoir good articles dessus.

1

Process Explorer vous permettra de le faire. Cliquez simplement sur "Rechercher" -> "Rechercher un handle ou une DLL", puis entrez le nom de votre fichier.

Il vous montrera ensuite tous les processus avec un handle pour ce fichier.

+0

+1 pour Proc Explorer - un très utile aussi. –

+0

Déjà essayé, mais ce processus inconnu utilisé le fichier pour une très courte période de temps, donc je n'ai pas eu de chance de l'attraper! –

+0

Hmm - dans ce cas, je commencerais probablement à ajouter la journalisation de l'ouverture de fichier à mon application, pour essayer de trouver quel thread l'ouvre. Je suis sûr qu'il y aura quelqu'un en une seconde pour vous dire une bonne façon d'utiliser des mutex ou quelque chose comme ça. –

Questions connexes