À L'Aide Du Répertoire.Existe sur un dossier réseau lorsque le réseau est en panne
Mon code de base contient les éléments suivants C# ligne:
bool pathExists = Directory.Exists(path);
Au moment de l'exécution, la chaîne path
se trouve être l'adresse d'un dossier sur l'intranet de l'entreprise - quelque chose comme \\company\companyFolder
. Lors de la connexion de mon ordinateur Windows à l'intranet est en place, cela fonctionne bien. Cependant, quand la connexion va vers le bas (comme il l'a fait aujourd'hui), l'exécution de la ligne ci-dessus les causes de l'application de geler complètement. Je ne peux que fermer l'application vers le bas en le tuant avec le Gestionnaire de Tâches.
Bien sûr, je préférerais avoir Directory.Exists(path)
retour false
dans ce scénario. Est-il un moyen de faire cela?
OriginalL'auteur user181813 | 2011-12-08
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucun moyen de modifier le comportement de
Directory.Exists
pour ce scénario. Sous le capot, c'est d'en faire un synchrone demande sur le réseau sur le thread d'INTERFACE utilisateur. Si la connexion réseau se bloque en raison d'une coupure de courant, trop de trafic, etc ... il fera le thread d'INTERFACE utilisateur pour les accrocher.Le meilleur que vous pouvez faire est de faire cette demande à partir d'un thread d'arrière-plan et explicitement abandonner après un certain laps de temps s'écoule. Par exemple
c'est le problème, vous ne pouvez pas. Le
Directory.Exists
méthode ne peut pas être contrôlé par des délais d'attente et depuis il est essentiellement gouttes immédiatement vers du code natif événement unThread.Abort
ne vous aide pas.OriginalL'auteur JaredPar
Si la connectivité réseau est votre principal problème, vous pouvez essayer de tester la connectivité réseau avant cette:
Ensuite déterminer si le chemin est un chemin d'accès UNC et retourne false si le réseau est déconnecté:
Rien de tout cela aide quand l'hôte que vous essayez de vous connecter est en mode hors connexion. Dans ce cas, vous êtes toujours en 2 minutes délai d'attente réseau.
OriginalL'auteur csharptest.net