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

VB.NET Discussion :

Libérer un fichier en VB.net


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Libérer un fichier en VB.net
    Bonjour,

    J'ai une PictureBox que je remplis au chargement de l'application comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PictureBox6.SizeMode = PictureBoxSizeMode.StretchImage
    PictureBox6.Load(Application.StartupPath + "\TamponNumerique\Tampon.png")
    Dans l'application, un bouton permet d'ouvrir un FileDialog où l'utilisateur peut choisir un fichier PNG.
    Une fois le choix effectué, l'application enregistre ce nouveau fichier à la place de l'ancien, donc dans Application.StartupPath + "\TamponNumerique\Tampon.png"

    Le problème est que j'ai un bug : le fichier Application.StartupPath + "\TamponNumerique\Tampon.png" est en cours d'utilisation.

    J'ai beau faire PictureBox6.Image = Nothing mais le fichier est toujours utilisé.

    PictureBox.Image.Dispose() me supprime le PictureBox et libère qui n'est alors plus accessible, mais j'en ai besoin pour recharger la nouvelle image dedans.

    Une idée ?

  2. #2
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Bonjour,

    Selon le support msdn, il faut passer par un FileStream : http://support.microsoft.com/kb/309482
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Ce comportement est voulu par la conception
    Il n'en reste pas moins étrange

    it's not a bug it's a feature ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir figou92,

    Comme l'a mentionné _Ez3kiel plus haut ( : On doit être sur la même longueur d'onde ) il faut utiliser un filestream et aussi penser à libérer la ressource avant de faire quoique ce soit sur le fichier. Jettes un oeil ici aussi :
    http://www.developpez.net/forums/d14...e/#post7665515

    Du coup tu pourrais éventuellement affecter l'image de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim Img as FileStream = New FileStream("C:\YourPicture.png", FileMode.Open)
    Me.PictureBox1.Image = Image.FromStream(Img)
    Img.Close()
    Ou alors si ton fichier est volumineux et que tu souhaites voir une progression (progressbar) lors du chargement de ton image tu pourrais utiliser les gestionnaires d'évènement suivant de ton pictureBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
        Private Sub LoadPicture()
            Me.PictureBox1.LoadAsync("C:\YourPicture.png")
        End Sub 
     
        Private Sub PictureBox1_LoadProgressChanged(ByVal sender As System.Object, ByVal e As ProgressChangedEventArgs) Handles PictureBox1.LoadProgressChanged
            If Not e.ProgressPercentage > 100 Then
                Me.ProgressBar1.Value = e.ProgressPercentage
            End If
        End Sub
     
        Private Sub PictureBox1_LoadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles PictureBox1.LoadCompleted
            Msgbox("Chargement terminé !")
            Me.PorgressBar1.Value = 0
        End Sub
    A+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [Resolu]
    Merci pour vos réponses Image.FromStream a effectivement réglé le problème.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Si ton problème est réglé, n'oublie pas de cliquer sur le bouton Résolu un peu plus bas
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

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

Discussions similaires

  1. Générer un fichier excel - asp.net 1.1
    Par p1k1 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 30/08/2007, 17h05
  2. telechargement fichier sur le net via vb 6
    Par milkeshake dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/05/2007, 22h02
  3. [Utilisation] Libérer un fichier CVS d’un utilisateur disparu
    Par fplanglois dans le forum CVS
    Réponses: 1
    Dernier message: 17/04/2007, 17h43
  4. Lecture/Ecriture de fichiers MAT via .NET
    Par mimic50 dans le forum MATLAB
    Réponses: 3
    Dernier message: 29/03/2007, 11h48
  5. [VB.NET] Comment dezipper un fichier en VB.net
    Par vijeo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/06/2006, 16h07

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