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

Windows Forms Discussion :

[C#][VS2003] Détecter 1 fichier utilisé par un processus


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut [C#][VS2003] Détecter 1 fichier utilisé par un processus
    Bonjour à tous,

    voilà mon problème: j'affiche dans une pictureBox un fichier Jpg associé à un utilisateur. Ce fichier est stocké dans un répertoire précis et porte le nom du login de l'utilisateur, qui est unique. En mode modification, l'utilisateur peut changer cette image.

    Ce que fais donc pr l'instant, je ré-affiche la nouvelle image dans la pictureBox et je voudrais supprimer l'ancien fichier image, afin de recopier le nouveau dans le répertoire. J'utilise donc la méthode File.Delete pour effacer le fichier.


    Le problème c'est qu'une erreur en résulte, du type: "impossible de supprimer le fichier car il est utilisé par une autre application". Ce qui m'étonne, car au moment où je le supprime, c'est le nouveau fichier qui est affiché dans la pictureBox.

    Ma question est donc: est-il possible de détecter si un processus utilise un fichier, et si oui comment l'en "détacher" ?

    J'espère avoir été assez clair, n'hésitez à me demander + d'infos si ce n'est pas le cas.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut Re: [C#][VS2003] Détecter 1 fichier utilisé par un processus
    Citation Envoyé par gregos
    Le problème c'est qu'une erreur en résulte, du type: "impossible de supprimer le fichier car il est utilisé par une autre application". Ce qui m'étonne, car au moment où je le supprime, c'est le nouveau fichier qui est affiché dans la pictureBox.
    C'est ce que tu crois mais je suppose que pour l'image precdente tu as dû faire un Image.FromFile etc... donc tant que cette image n'a pas été disposé alors il y a toujours des ressources attachées à ce fichier

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Je n'ai pas utilisé Image.fromFile mais j'ai la classe File. Mais dans un cas comme dans l'autre, il me suffit de faire le dispose si j'ai bien compris ?

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Montre nous ton code, on avisera

  5. #5
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    J'ai le même problème que toi, sauf que moi des fois ca passe, des fois ca passe pas. J'ai l'impression qu'il faut laisser le temps au système de souffler avant de faire le delete du fichier.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    D'une part, j'affecte la nouvelle image à la pictureBox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Bitmap Img = new Bitmap(fileName);
    pictBox.Image = Img;
    C'est donc ici que la nouvelle image qui est affiché dans la pictureBox.

    Et donc plus loin, je supprime l'ancien fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FileInfo FichierSignature = new FileInfo(oldfilename);
    File.Delete(PathTemp+PathRep+FichierSignature.Name);
    File.Delete(PathServer+FichierSignature.Name);
    C'est donc lorsque je veux faire le delete que l'erreur apparait. Mais vu que je ne fais jamais Img.Dispose, je suppose que le problème vient de là.

    Merci...


    EDIT pour Harry_Polin --> moi ca ne fonctionne jamais, même en attendant !

  7. #7
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Essaye de faire une application Test, avec juste une pictureBox dedans et un bouton "delete", et mets-y le stricte minimum de code pour tester cette fonctionnalité.

    Si ca marche, ca veut dire que tu dois certainement garder quelque part un pointeur sur le contenu de Img.

    si ca ne marche pas, postes nous ce code-là.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Ok j'essaie merci

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Le problème est bien là dans ta façon de lier l'image issu d'un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Bitmap Img = new Bitmap(fileName);
    pictBox.Image = Img;
    Esayes en mettant un Intermediaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Image img = Image.FromFile(fileName);
    Bitmap bmp = new Bitmap(img);
    pictBox.Image = bmp;
    img.Dispose();
    Assures toi que pictBox.Image n'est jamais initialisé autrement que comme cela
    Ainsi les flux sous-jascents sont libérés au fur et à mesure et tu peux effectuer les delete souhaités au même rythme

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    En effet ca marche de cette manière! Génial... Tu m'enlève une sacrée épine du pied!

    Merci à vous 2

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

Discussions similaires

  1. fichier qui ne se supprime pas car utilisé par un processus
    Par icicmoi dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/04/2008, 15h16
  2. copier un fichier utilisé par une processus xp
    Par jvnet dans le forum Windows XP
    Réponses: 2
    Dernier message: 26/08/2007, 23h20
  3. Réponses: 5
    Dernier message: 14/04/2007, 18h47
  4. [JNI] Fichier utilisé par un autre processus
    Par Julaie95 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 10/08/2006, 11h39
  5. Erreur "Fichier utilisé par un autre processus"
    Par solo3326 dans le forum Langage
    Réponses: 3
    Dernier message: 18/08/2005, 16h55

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