Libérer les ressources d'un composant System.Data.SqlClient.SQLConnection
1 réponse
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()
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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()
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.
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%23fJHA.1172@TK2MSFTNGP04.phx.gbl...
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()
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.
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()
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.