Requette dans Thread et memory Leak
Le
Fredo

Bonsoir,
Dans un thread manuel (threadexecute, utilisation d'hyperfile) je fait
une requête sur un fichier afin de tester quelques enregistrements.
Boucle
Si hexecuteRequeteSQL(MaRequette,.) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement
hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
ThreadPause(100)
si faux alors sortir
fin
Je me retrouve avec une augmentation constante de l'utilisation de
mémoire (executable ou mode test) de quelques dizainnes de ko jusqu'a la
fermeture de la fenêtre exécutant le thread.
Si vous avez des pistes pour résoudre cette fuite de mémoire.
Merci d'avance,
Fred.
Dans un thread manuel (threadexecute, utilisation d'hyperfile) je fait
une requête sur un fichier afin de tester quelques enregistrements.
Boucle
Si hexecuteRequeteSQL(MaRequette,.) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement
hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
ThreadPause(100)
si faux alors sortir
fin
Je me retrouve avec une augmentation constante de l'utilisation de
mémoire (executable ou mode test) de quelques dizainnes de ko jusqu'a la
fermeture de la fenêtre exécutant le thread.
Si vous avez des pistes pour résoudre cette fuite de mémoire.
Merci d'avance,
Fred.
Complément d'information, si je remplace la requette par un hfiltre,
hlitpremier, ... il n'y a plus de soucis.
Cela semble donc bien être lié à la requette.
Fred
Maproc (=> dans un thread)
boucle
Fonction_controle()
fin
Fin
Fonction_controle (avec copie de contexte non threadé)
Si hexecuteRequeteSQL(MaRequette,....) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement
hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
si faux alors sortir
fin
On 10 déc, 08:56, Fredo
Problème résolu ... et cela ne vient pas directement de la requête.
Pour aller vite car je ne me rappelais plus de la fonction SQL
équivalente du position de windev (instr) j'ai testé la position d'une
chaine en mettant :
"Where wl.position(MaVal,'TOTO')" au lieu de "Where instr(MaVal,'TOTO')"
et c'est le wl.position qui provoque le memory leak. J'ai modifié le
code et tout roule à nouveau et j'ai remonté l'info à PCSOFT.
Merci encore.
Fred
Le 12/12/2011 09:39, a écrit :