2010-11-15 8 views
0

J'ai un service Windows qui gère un thread séparé avec une fonction qui peut fairecomportement étrange Directory.CreateDirectory

if (!Directory.Exists(TempUpdateDir)) 
     { 
      DirectoryInfo di = Directory.CreateDirectory(TempUpdateDir); 
      di.Refresh(); 
      EventLog.WriteEntry("Downloader", string.Format("DEBUG: Trying to create temp dir:{0}. Exists?{1},{2}",TempUpdateDir, Directory.Exists(TempUpdateDir), di.Exists)); 
     } 

qui ne jette pas des exceptions, Directory.Exists dit vrai (à l'intérieur si le bloc) et pourtant il est pas un tel répertoire sur le disque, quand vous regardez avec l'explorateur. J'ai vu le répertoire créé à quelques reprises, mais la plupart du temps le répertoire n'est pas créé, aucune exception n'est levée non plus. (Ce service s'exécute sous Système local) Plus tard, ce service démarre le programme en utilisant la classe Process et quitte. Ce programme est également supposé fonctionner avec des fichiers, les copier dans le répertoire créé, mais il ne le fait pas non plus.

Le code rencontre des problèmes sur le serveur Windows 2003.

Qu'est-ce que le .... ?????????????

Répondre

1

Mon est queest un nom de répertoire relatif, et il ne fait pas réellement référence à où vous le pensez. C'est difficile à dire sans plus d'informations. Il serait également utile de consigner le chemin absolu, afin de le rendre plus facile à vérifier.

1

Pour créer des dossiers, créer une instance de DirectoryInfo puis appelez le DirectoryInfo méthode .Create. Vous pouvez vérifier le booléen DirectoryInfo. Propriété Exists pour déterminer si un dossier existe déjà. L'exemple suivant vérifie l'existence d'un dossier et le crée s'il n'existe pas déjà, bien que le Common Language Runtime (CLR) ne lève pas d'exception si vous tentez de créer un dossier qui existe déjà.

Exemple de création de répertoire:

DirectoryInfo newDir = new DirectoryInfo(@"C:\deleteme"); 
if (newDir.Exists) 
    Console.WriteLine("The folder already exists"); 
else 
    newDir.Create();