2009-09-16 9 views
3

J'utilise VSTS 2008 + C# + .Net 3.5 pour développer une application console. Pour l'accès au fichier, nous pouvons accéder au fichier en mode exclusif qui bloque l'accès au fichier par d'autres processus/threads - ce qui a pour effet de "verrouiller" le fichier.pouvons-nous verrouiller un répertoire?

Je me demande pour le répertoire, y at-il une API ou une solution intégrée pour rendre l'accès exclusif au répertoire - a l'effet de "verrouillé"? Par exemple, si un thread "verrouille" le répertoire, autre thread/processus ne peut pas appeler Directory.GetFiles, ne peut pas écrire le fichier dans le répertoire, ne peut pas lire un fichier du répertoire, etc

Répondre

1

Si c'est votre propre processus qui pourrait interférer vous pouvez utiliser un mutex nommé pour synchroniser. Il est très difficile d'écarter d'autres processus, l'approche habituelle consiste à éviter un répertoire temporaire (caché), à faire votre travail et à copier/déplacer les résultats.

+0

1. "L'approche habituelle consiste à éviter un répertoire temporaire (caché), à faire votre travail et à copier/déplacer les résultats." -- bonne idée! Appréciez si vous pourriez décrire plus ou me recommander plus de lectures sur ce sujet? 2. Je veux confirmer avec vous qu'il n'y a pas d'API de système de fichiers intégrée pour verrouiller un répertoire? – George2

+0

Merci pour votre aide Henk, j'ai répondu à votre réponse. – George2

1

Je pense que vous peut faire est de définir le contrôle d'accès du répertoire, puis le modifier lorsque vous avez terminé. Jetez un coup d'oeil ici:

http://msdn.microsoft.com/en-us/library/system.io.directory.setaccesscontrol.aspx

+1

Vous voulez supprimer l'accès de tous les autres utilisateurs sauf moi? Si oui, ma confusion est, si je crée un processus qui a 2 threads, les deux threads sont exécutés sur le même compte, dans ce scénario, comment puis-je empêcher un thread d'accéder, mais activer l'accès de l'autre thread? – George2

Questions connexes