Utilisation mémoire de mon appli

boninou Messages postés 59 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 16 mai 2012 - 25 janv. 2008 à 10:24
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 25 janv. 2008 à 18:20
Bonjour a tous !

J'ai fai une appli en vb6 qui recupere des enregistrements dans une base de données et qui génére un xml a partir de ces enregistrements.
J'ai donc un ADODB.Connection, un ADODB.Recordset, un  ADODB.Field, un MSXML2.DOMDocument, des MSXML2.IXMLDOMElement, un MSXML2.IXMLDOMProcessingInstruction

j'ai une boucle while MonRecordSet.EOF = False
et a l'interieur un For Each fldLoop In MonRecordSet.Fields dans lequel j'affecte les valeurs a mes noeuds

J'ai mis un DoEvents pour pouvoir annuler et dans mon bouton annuler je mets une variable globale à 1 qui a pour effet d'arreter ma boucle while et qui fait :

                MonRecordSet.Close
                MaConnexion.Close
                Set xmlDoc = Nothing
                Set oNoeudRacine = Nothing
                Set oInstructionCreation = Nothing
                Set oNoeudEnfantMembre = Nothing
                Set oNoeudMembre = Nothing
                Set oNoeudEnfantMembreActivite = Nothing
                Set xPI = Nothing
                Set fldLoop = Nothing

Mais dans le gestionnaire des taches mon appli monte quand je lance le traitement mais ne revient pas à son poids initial quand je clic sur annuler.
Mon appli fait 5000 ko au lancement
Monte sans cesse pendant mon traitement et si je clic sur annuler quand elle atteint 100 000 ko
elle retombe à 73 000 ko ce qui est loin des 5000 initiaux

Merci de votre aide

1 réponse

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 janv. 2008 à 18:20
salut,

il faut voir s'il y a d'autres objets  (tous à fermer et à détruire)
et si au moment de la fermeture des RS et DB ils ne sont pas en activité.

pour ce dernier point, juste avant : MonRecordSet.Cancel et MaConnexion.Cancel

et pour le XML, peut-être prendre moins de ressources en utilisant la méthode du RS (selon tes besoins)
çà donne alors juste MonRecordSet.Savechemin_XML_de_destination, adPersistXML

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous