IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Test si un fichier est ouvert dans une autre application


Sujet :

C#

  1. #1
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut Test si un fichier est ouvert dans une autre application
    Bonjour,

    Je cherchais un moyen de verifier si le fichier etait ouvert par une application.

    Je suis tombé sur ce sujet : https://www.developpez.net/forums/d2...ichier-ouvert/

    Qui proposait une solution via un try/catch.

    Le sujet datant d'un moment (Fin 2006), je me suis dis que j'allais vous demander si le framework avait assez évolué pour proposer une solution plus élégante.

    Merci de vos lumières.
    F.

  2. #2
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Contrairement aux apparences cette approche est correcte, à cause du TOCTTOU : Time Of Check To Time Of Use. C'est-à-dire que si la vérification et l'utilisation ne constituent pas une opération atomique l'état de la resource peut être invalidé avant l'utilisation et provoquer une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(CanOpenFile(file))
    {
      OpenAndUseFile(file);
    {
    else
    {
     ReportError("Can not open file");
    }
    Concrètement avec ce code si le fichier est disponible à l'appel de CanOpenFile mais qu'il ne l'ai plus au moment de l'appel à OpenAndUseFile (fichier supprimé, ouvert par un autre processus, réseau déconnecté, radiations solaires inopinées, apocalypse zombi...) il y aura une erreur non gérée, il faudra de toute façon se protéger des erreurs inattendues. Donc autant utiliser l'approche optimiste avec gestion des erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    bool TryOpenAndUseFile(string filePath)
    {
      try
      {
        OpenAndUseFile(filePath);
        return true;
      }
      catch(Exception e)
      {
        ReportError(e);
        return false;
      }
    }

  3. #3
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    D'accord.
    Merci de ton aide.

    Cordialement.
    F.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/02/2015, 15h54
  2. Réponses: 12
    Dernier message: 16/04/2010, 10h12
  3. [WD14] Vérifier si un fichier est ouvert dans une autre application
    Par Gaautman dans le forum WinDev
    Réponses: 1
    Dernier message: 17/01/2010, 20h07
  4. Test si un fichier est présent dans une directory
    Par lefabe dans le forum VBScript
    Réponses: 1
    Dernier message: 04/11/2008, 10h48
  5. Détecter qu'une page HTML est ouverte dans une frame
    Par Pigoulou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/01/2006, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo