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 :

probleme avec IO.File.Delete


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut probleme avec IO.File.Delete
    Bonjour tout le monde,

    J'ai une application qui génère un pdf et un bouton "Apercu" qui ouvre une fenêtre contenant un webBrowser qui affiche le pdf.
    Cependant vu que ce n'est qu'une fenêtre d'aperçu, je voudrais faire un delete du pdf quand cette fenêtre est fermée mais je ne peux pas car j'ai une erreur me disant que le document est déjà en cours d'utilisation (j'imagine que c'est le webBrowser qui provoque ça).

    Pourtant lorsque je ferme ma fenêtre d'aperçu le pdf devrait être "libéré"...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If generationPDF() Then                                                                      'generationPDF renvoi True si succés
                    FenetreApercu.AffichageApercu("C:\Users\stagiaire-info2\Desktop\FT_IDTracteur_Code.pdf") 'instanciation de ma fenêtre avec le chemin du pdf
                    FenetreApercu.ShowDialog()                                                               'fenêtre modale
                    IO.File.Delete("C:\Users\stagiaire-info2\Desktop\FT_IDTracteur_Code.pdf")                'delete du pdf "temporaire"
                End If
    Petite précision : j'arrive bien à delete ce pdf mais à partir d'un autre bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ButtonSupprimerFiche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSupprimerFiche.Click
            MsgBox("Etes vous sûr de vouloir supprimer cette fiche ?" + vbCrLf + "Toutes suppression est définitive.", MsgBoxStyle.OkCancel, "Suppression d'une fiche")
            If MsgBoxResult.Ok Then
                IO.File.Delete("C:\Users\stagiaire-info2\Desktop\FT_IDTracteur_Code.pdf")
                DGVListeFiche.Rows.Remove(DGVListeFiche.SelectedRows.Item(0))
            End If
        End Sub

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Salut l'ami ^^

    Et oui encore moi :-)

    Voilà, à mon humble avis, ce qu'il se passe (tout le code n'étant pas posté, je fais des suppositions) :
    - La sub de ton bouton d'aperçu crée une instance de la winform qui contient le webbrowser. Vu que le webform est un enfant du winform, il est créé en même temps (heureusement ^^)
    - Ton showdialog affiche l'aperçu et attend la fermeture de la fenêtre pour poursuivre le traitement.
    - Tu essaies de faire un delete mais vu que tu ne détruis pas l'instance de ta fenêtre de manière explicite, le webbrowser n'est pas détruit et donc le fichier est toujours utilisé
    - Lorsque tu cliques sur l'autre bouton, tu changes de procédure. Ce qui fait que tout ce qui est déclaré localement "cesse d'exister". Cela inclut ta fenêtre d'aperçu et par conséquent, le webbrowser qui s'y trouve. Cela libère donc le fichier pdf afficher dans le webbrowser.

    Ma suggestion (en se basant que mes suppositions sont justes car je n'ai jamais vraiment lu de doc sur "Comment VS instancie les fenêtres") :

    Après ton showdialog, je placerai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FenetreApercu.Dispose()
    FenêtreApercu = Nothing
    Peux-tu essayer cela ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Merci de te pencher (une nouvelle fois ^^) sur mon problème

    Donc je viens de tester ce que tu viens de dire (pour info je l'avais déjà tester mais sans le "fenetreApercu = Nothing") et il n'y a aucun changement


  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Fichtre !

    Mais quelque chose me chipote... Ce delete ne faisait-il pas l'objet d'une précédente discussion dont la chose avait été résolue justement en mettant le webbrowser dans une fenêtre à part ?

    Sinon, p-e qu'il faut un certain temps au Garbage Collector pour faire son job...
    Essaie alors en libérant directement le webbrowser plutôt que la fenetreApercu.

    J'attends ton feedback ;-)

  5. #5
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour,

    Peux tu nous montrer le code de ta méthode afficheApercu s'il te plait ?
    Tu as peut être oublié de fermer l'objet lisant ton pdf

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    @griftou : effectivement nous en avions déjà discuté et j'avais résolu le problème en mettant ce webBrowser dans une autre fenêtre, mais le problème est réapparue puisque je veux supprimer ce pdf qui n'est qu'un paerçu et ne le garder que si le user clic sur "Enregistrer"...

    @Gurdil : merci de te joindre à nous pour tenter de venir à bout de ma nOOb attitude , sinon pour répondre à ta question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class FenetreApercu
     
        Public Sub AffichageApercu(ByVal chemin As String)
            WebBrowserApercu.Navigate(chemin)
        End Sub
     
    End Class

  7. #7
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Y a t-il un endroit où tu fermes ton webbrowser ?

    Logiquement il devrait se fermer à la destruction de ta form...mais on sait jamais

  8. #8
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Citation Envoyé par Shadam Voir le message
    @griftou : effectivement nous en avions déjà discuté et j'avais résolu le problème en mettant ce webBrowser dans une autre fenêtre, mais le problème est réapparue puisque je veux supprimer ce pdf qui n'est qu'un paerçu et ne le garder que si le user clic sur "Enregistrer"...
    Oui mais la première fois qu'on avait discuté de cela, c'était pour faire un delete non ? (ou un rename mais cela revient au même)

    Et tu avait l'air de dire que cela fonctionnait. Qu'est-ce qui a changé depuis ?

    EDIT : Sinon, d'après cette discussion (http://social.msdn.microsoft.com/For...a-c5e6d3c1b1bf), il semblerait qu'il te faut faire une copie du pdf a visualiser et d'afficher la-dite copie. Mais cela me semble bancale car tu resteras toujours avec ta copie sur les bras '-_-

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

Discussions similaires

  1. Probleme avec JFileChooser, file NULL
    Par mugwump dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 08/08/2007, 15h06
  2. [TableAdapter] probleme avec la methode DELETE
    Par drayif dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/07/2007, 14h46
  3. Probleme avec ma requete DELETE
    Par Subkill dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/05/2007, 19h14
  4. probleme avec la méthode "delete", (ADO)
    Par nguhv dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/04/2007, 13h56
  5. Probleme avec utl-file
    Par Scratch48 dans le forum Oracle
    Réponses: 25
    Dernier message: 12/04/2005, 18h39

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