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 :

Fichier xml bloqué par svchost.exe [Débutant]


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Fichier xml bloqué par svchost.exe
    Salutations!

    Mon premier post pour un souci dont je ne trouve pas la solution. J'ai ce problème sur plusieurs Form de mon application (VB.net) donc je suppose un problème d'utilisation/manipulation de mon fichier Xml.

    Je vais baser cette question sur 1 Form, je devrais être en mesure d'appliquer vos solutions aux autres Forms!

    Donc voila, la première fois que je clique sur le bouton OK, tout se passe bien (ou presque, car ma base de donnée ne se met pas à jour...). Par contre, la deuxième fois j'obtiens le message:

    The process cannot access the file 'c:\fichier.xml' because it is being used by another process

    Le code maintenant:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
            Dim strquery As String
            Dim element As XmlNodeList
            Dim XmlDoc As XmlDocument = New XmlDocument()
            Dim noeud, noeudEnf As XmlNode
            Dim xmlFile As XmlReader
            Dim AgId As String = tx_Login.Text.ToString
            Dim ds As New DataSet
            Dim i As Integer = 0
     
            Dim nPassword As String = tx_pwd.ToString & My.Settings.Salt
            Dim ePassword As String = makeMD5Hash(nPassword)
     
            Dim test As String
            Try
                If System.IO.Directory.Exists("c:\dossier") = False Then
                    System.IO.Directory.CreateDirectory("c:\dossier")
                End If
     
                If System.IO.File.Exists("c:\dossier\fichier.xml") = True Then
                    System.IO.File.Delete("c:\dossier\fichier.xml")
                End If
     
                strquery = "UPDATE tb_Agent SET tb_agPwd = '" & ePassword & "' WHERE (tb_agId)=" & AgId
                test = "SELECT * FROM tb_Agent WHERE tb_agId=" & AgId
                access_update(strquery)
                access(test, "Test").WriteXml("c:\dossier\fichier.xml")
                XmlDoc.Load("c:\dossier\fichier.xml")
                element = XmlDoc.DocumentElement.GetElementsByTagName("Test")
                xmlFile = XmlReader.Create("c:\dossier\test1.xml", New XmlReaderSettings())
                ds.ReadXml(xmlFile)
     
                While i < element.Count
                    For Each noeud In element
                        For Each noeudEnf In noeud.ChildNodes
                            If noeudEnf.Name = "tb_agPwd" Then
                                MsgBox(noeudEnf.Value)
                            End If
                        Next
                        i += 1
                    Next
                End While
     
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
          End Sub
    Je vous joint également le code des fonction access et acces_update:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Imports System.Data.OleDb
    Module bdaccess
        Dim MyConnection As New System.Data.OleDb.OleDbConnection()
         Public Sub connection()
            Try
                MyConnection.ConnectionString = My.Settings.WFMT_dbConnectionString
                MyConnection.Open()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Sub
     
        Public Sub deconnection()
            Try
                MyConnection.Close()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Sub
     
        Public Function access(ByVal requetesql As String, ByVal argquery As String) As DataSet
            Dim MyAdapter As OleDbDataAdapter = New OleDbDataAdapter()
            Dim MyDataSet As DataSet = New DataSet("MyData")
            Dim MyCommand As OleDbCommand
     
            Try
                connection()
                MyCommand = New OleDbCommand(requetesql, MyConnection)
                MyAdapter.SelectCommand = MyCommand
                MyDataSet.Clear()
                MyAdapter.Fill(MyDataSet, argquery)
                deconnection()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
            Return MyDataSet
        End Function
     
        Public Function access_update(ByVal requetesql As String) As DataSet
            Dim MyAdapter As OleDbDataAdapter = New OleDbDataAdapter()
            Dim MyDataSet As DataSet = New DataSet("MyData")
            Dim MyCommand As OleDbCommand
            Try
                MyCommand = New OleDbCommand(requetesql, MyConnection)
                connection()
                MyAdapter.UpdateCommand = MyCommand
                deconnection()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
            Return MyDataSet
        End Function
     
    End Module
    J'obtiens donc l'erreur sur le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                If System.IO.File.Exists("c:\dossier\fichier.xml") = True Then
                    System.IO.File.Delete("c:\dossier\fichier.xml")
                End If
    Voila! Je suis preneur de tous conseils/remarques/troll(!) dont vous pourriez me faire part!

    Merci d'avance!

    Louis

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    À première vue, vous ouvrez un XmlReader mais vous ne le refermer pas.

    Dans Sub OK_Button_Click, ajoutez xmlFile.Close(); et normalement l'erreur ne devrait plus survenir.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci! Ca fonctionne!

    Je me suis focalisé sur un XmlDoc.Unload qui n'existe pas avant de poser ma question ici!

    Merci encore pour le coup de pouce!

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    De rien.

    Heureux d'avoir pu vous aider.

    Bonne journée à vous.

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

Discussions similaires

  1. Récupération d'un fichier XML généré par une URL
    Par Gordon Freeman dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2009, 17h02
  2. [Castor] Echappement des caractères <> dans un fichier XML généré par Castor XML
    Par mbinte dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 22/10/2008, 14h33
  3. Lire un fichier xml incorporé dans l'exe
    Par chris81 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/02/2008, 12h54
  4. [JDOM] Fichier xml généré par jdom
    Par vero59 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/08/2005, 16h30
  5. Réponses: 4
    Dernier message: 23/06/2005, 12h44

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