Libérer les ressources d'un composant System.Data.SqlClient.SQLConnection

Le
Bonjour,

J'ai 1 problème pour libérer les ressources lors de la fermeture d'un objet
SQLConnection.


Sub fermer_projet()

connection_bdd_projet.Close()

IO.File.Delete(NomFichierProjetTMP & ".mdf")


Exception :
L'exception IOException n'a pas été gérée

Le processus ne peut pas accéder au fichier 'C:Documents and
SettingsprofiltestLocal SettingsTemptmp470.mdf', car il est en cours
d'utilisation par un autre processus.


Le problème persiste en rajoutant :
connection_bdd_projet.Dispose()


Sub fermer_projet()

connection_bdd_projet.Close()
connection_bdd_projet.Dispose()

IO.File.Delete(NomFichierProjetTMP & ".mdf")


Idem en rajoutant :
connection_bdd_projet = Nothing


Sub fermer_projet()

connection_bdd_projet.Close()
connection_bdd_projet.Dispose()
connection_bdd_projet = Nothing

IO.File.Delete(NomFichierProjetTMP & ".mdf")


Comment réussir à libérer les ressources de la connexion afin de pouvoir
supprimer les fichiers temporaires ?



NB :
La surcharge
connection_bdd_projet.Dispose(True)
ne fonctionne bizarrement pas (erreur immédiatement affichée dans la Liste
d'erreurs)
et
connection_bdd_projet.Finalize
n'est bizarrement pas 1 méthode non plus. (alors que les 2 sont visibles
dans l'aide du Membre SqlConnection (espace de noms System.Data.SqlClient))


NB 2 :
Les fichiers temporaires n'existaient pas avant la connexion. (ils ont été
copiés exprès juste avant) (donc le fichier n'est pas accidentellement
utilisé par quelqu'un ou quelque chose d'autre que la connexion sql)

NB 3 :
Le problème persiste même si aucune opération SQL n'est effectuée. (open
puis directement close)

NB 4 :
Si je réexécute en mode débug la ligne :
IO.File.Delete(NomFichierProjetTMP & ".mdf")
après avoir vérifié que la propriété State=ConnectionState.Closed,
le problème persiste toujours.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Le #18492541
Problème réglé.

Apparement, même s'il n'y a eu aucune opération SQL, il faut exécuter cette
commande :
SqlConnection.ClearPool(connection_bdd_projet)

A noter que les ressources ne sont pas immédiatement libérées, mais elles le
sont automatiquement au bout de quelques secondes.

Il ne reste alors plus qu'à tester la suppression des fichiers temporaires.



<Stéphane> a écrit dans le message de news:
eHoCJi%
Bonjour,

J'ai 1 problème pour libérer les ressources lors de la fermeture d'un
objet SQLConnection.


Sub fermer_projet()

connection_bdd_projet.Close()

IO.File.Delete(NomFichierProjetTMP & ".mdf")


Exception :
L'exception IOException n'a pas été gérée

Le processus ne peut pas accéder au fichier 'C:Documents and
SettingsprofiltestLocal SettingsTemptmp470.mdf', car il est en cours
d'utilisation par un autre processus.


Le problème persiste en rajoutant :
connection_bdd_projet.Dispose()


Sub fermer_projet()

connection_bdd_projet.Close()
connection_bdd_projet.Dispose()

IO.File.Delete(NomFichierProjetTMP & ".mdf")


Idem en rajoutant :
connection_bdd_projet = Nothing


Sub fermer_projet()

connection_bdd_projet.Close()
connection_bdd_projet.Dispose()
connection_bdd_projet = Nothing

IO.File.Delete(NomFichierProjetTMP & ".mdf")


Comment réussir à libérer les ressources de la connexion afin de pouvoir
supprimer les fichiers temporaires ?



NB :
La surcharge
connection_bdd_projet.Dispose(True)
ne fonctionne bizarrement pas (erreur immédiatement affichée dans la Liste
d'erreurs)
et
connection_bdd_projet.Finalize
n'est bizarrement pas 1 méthode non plus. (alors que les 2 sont visibles
dans l'aide du Membre SqlConnection (espace de noms
System.Data.SqlClient))


NB 2 :
Les fichiers temporaires n'existaient pas avant la connexion. (ils ont été
copiés exprès juste avant) (donc le fichier n'est pas accidentellement
utilisé par quelqu'un ou quelque chose d'autre que la connexion sql)

NB 3 :
Le problème persiste même si aucune opération SQL n'est effectuée. (open
puis directement close)

NB 4 :
Si je réexécute en mode débug la ligne :
IO.File.Delete(NomFichierProjetTMP & ".mdf")
après avoir vérifié que la propriété State=ConnectionState.Closed,
le problème persiste toujours.





Publicité
Poster une réponse
Anonyme