J'ai un souci avec un site en C#.
Dans chaque page, j'instancie un objet "Queries", qui contient des méthodes qui lancent des requêtes dans la base de données et retournent des DataTable.
A la création de l'objet, ce dernier initialise une connection à la base de données, et l'ouvre (plus fait une série de tests pour vérifier que tout est OK).
Tout marche bien.
Dans le destructeur de mon objet, je fais un "cnx.Close();" puis "cnx.Dispose();" suivit d'un "cnx = null;"
Avec ça, à priori elle est bien morte...
Par contre, j'ai un problème.
Sur certaines pages, j'ai des Datareapeater, du et dans ces derniers, je dois refaire des requêtes.
Du coup, je déclare mon objet Queries en global dans la page.
Je l'instancie dans le Page_Load()
Mais je ne le détruit jamais, puisque les évènement "DataBinding" à priori sont assychrone, donc peuvent se lancer alors que Page_Load() a terminé (j'ai bon ?)
Seulement, après avoir constaté une chiée de problème (dont une majorité semble plutôt venir d'un problème réseau), je me suis apperçu que la mémoire dispo sur le serveur diminue à chaque chargement de page, et ne semble jamais redescendre.
De plus, au bout d'un moment, impossible de se connecter à la base.
Du coup j'ai l'impression que mon objet n'est jamais détruit. (me semblait pourtant que le GC était là pour ça...)
Là, dans le "Page_Load", j'ai rajouté à la fin "Queries = null;", histoire de la détruire correctement à la main. Seulement, j'ai pas encore testé, mais j'ai des doutes quand à la stabilité du truc contenu des évènements Databinding qui se lancent en // normalement.
Page_Dispose pourrait-il résoudre le problème ? Si vous pouviez m'aider un peu, là je suis dans une merde noire. J'aurais mieu fait de la faire en ASP, au moins c'est séquentiel et je maîtrise... Le truc doit impérativement fonctionner parfaitement le 30 janvier Et lundi/mardi je suis en formation