WPF France

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille

Vous souhaitez que File.Exists, FileInfo.Exists et/ou Directory.Exists soient plus rapides? Moi aussi!

Envoyer Imprimer PDF
Note des utilisateurs: / 4
MauvaisTrès bien 
Il est relativement courant dans une application de vérifier l'existence d'un fichier avant de l'utiliser. Dans une application riche WPF ou Silverlight, l'utilisation des média rend cela encore plus fréquent.

Afin d'effectuer ce contrôle, le framework .Net propose l'utilisation des classes File et/ou FileInfo. Mais l'obtention de ce résultat peut parfois être très long et particulièrement trop long pour moi :). Dans cet article nous allons détailler une méthode qui peut être utilisée dans certains cas pour raccourcir ce délai.


Dans un premier temps, voici un exemple d'utilisation de ces deux classes:

file.exists exemple

Très simple en terme de ligne de code comme on peut le voir ! Cependant cela peut prendre beaucoup de temps à l'éxecution. C'est particulièrement le cas lorsque le fichier en question est sur un disque réseau: si le disque est innacessible, il faut attendre un time-out pour avoir l'indication que le fichier n'existe pas.

Ce Time-out est parfois trop long pour l'utilisateur et la technique que je présente permet de le configurer en utilisant astucieusement la classe Task du framework .Net 4.0. Voici la méthode en question :

private static bool VerifyFileExists(Uri uri, int timeout = 200)
{
var task = new Task<bool>(() =>
{
var fi = new FileInfo(uri.LocalPath);
return fi.Exists;
});
task.Start();
return task.Wait(timeout) && task.Result;
}

Comme on peut le constater, on attends pendant la durée 'timeout' que la tâche se termine, si elle n'est pas finie après ce délai alors on considère que le fichier n'existe pas.

La méthode ne renvoie donc pas un résultat exact, le temps d'accès au fichier pouvant simplement être long, mais elle a le mérite d'être executée dans un temps donné configurable.

Bonne continuation.

Article traduit et enrichi depuis http://www.jonathanantoine.com/2011/08/18/faster-file-exists/.


Commentaires (2)
Mise à jour le Lundi, 22 Août 2011 10:22  

Partagez


Article au hasard

  • Cet article présente une technique simple permettant de paramétrer des styles, de façon à pouvoir faire varier l'apparence ou le comportement d'un contrôle sans dupliquer le style.

    Lire l'articleCommentaires (0)...
    Lire la suite...