Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
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
Settings\profiltest\Local Settings\Temp\tmp470.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.

1 réponse

Avatar
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.