[Résolu][Windev] Dispose ne fonctionne plus avec la 3.1
Publié : 22 juil. 2009 13:27
Bonjour à tous,
Nouveau soucis, je viens de passer à la 3.1 et là problème il semble que lorsque je fais un dispose, celui-ci ne libère pas vraiment l'objet.
En version 3.0 ma commande libère le fichier odb que je peux alors supprimer dans la suite de ma procédure.
En version 3.1 la même commande s'exécute sans erreur de code, mais le fichier ne peut être supprimé tant que je ne ferme pas soffice.bin et soffice.exe depuis le gestionnaire des tâches. Il y aurait bien la solution kill, mais que je ne peux pas utiliser sinon les autres documents OO des utilisateurs seront fermés également.
Y a t-il une différence-évolution dans la façon de libérer entre la 3.0 et la 3.1 ?
Un autre soucis mais avec la 3.0, lorsque je lance mon code sur une machine ayant un intel core 2 Duo E4600 tournant sous winxp Pro, la fusion se fait correctement mais au moment de la libération des ressources je me retrouve avec un Access Violation en test comme en exe, que je n'ai jamais sur la machine de développement qui tourne sur un AMD Athlon 64 X2 Dual Core Processor 4400+ et Windows Vista Pro. Je précise que l'hyperthreading est désactivé et que la fusion sous Word marche sur les 2 configs, donc si quelqu'un a une piste, il recevra toute ma gratitude.
Nouveau soucis, je viens de passer à la 3.1 et là problème il semble que lorsque je fais un dispose, celui-ci ne libère pas vraiment l'objet.
Code : Tout sélectionner
:UneInstance = MonDBContexte>>createInstance()
monDocBase = :UneInstance>>DatabaseDocument
...
SI MonDBContexte>>hasbyname(Nomsource) ALORS // Nomsource est le nom de ma base et aussi le nom de la table
MonDBContexte>>revokeobject(Nomsource)
FIN
// LIBERATION DES RESSOURCES
MonPublipostage>>Dispose
:UneInstance>>Dispose
:Liberer_Ressources(Vl_Args,MonPublipostage,MonDBContexte,:UneInstance,monDocBase,MonArray)
SI Nomsource <> Nomsourcegarde ALORS
SI fFichierExiste(ComplèteRep(xsCheminreptemp)+Sourcemodele+".ODB") ALORS
SI PAS fSupprime(ComplèteRep(xsCheminreptemp)+Sourcemodele+".ODB",frLectureSeule) ALORS
Erreur("Impossible de supprimer le fichier "+Sourcemodele+".ODB","Fusion annulée","Veuillez contacter votre installateur")
RETOUR
FIN
FIN
FIN
Code : Tout sélectionner
PROCEDURE Liberer_Ressources(Vl_Args,MonPublipostage,MonDBContexte,UneInstance,monDocBase,MonArray)
libérer Vl_Args
libérer MonPublipostage
libérer MonDBContexte
libérer UneInstance
libérer monDocBase
libérer MonArray
libérer :oDocument
libérer :oDesktopCode : Tout sélectionner
:UneInstance>>DisposeEn version 3.1 la même commande s'exécute sans erreur de code, mais le fichier ne peut être supprimé tant que je ne ferme pas soffice.bin et soffice.exe depuis le gestionnaire des tâches. Il y aurait bien la solution kill, mais que je ne peux pas utiliser sinon les autres documents OO des utilisateurs seront fermés également.
Y a t-il une différence-évolution dans la façon de libérer entre la 3.0 et la 3.1 ?
Un autre soucis mais avec la 3.0, lorsque je lance mon code sur une machine ayant un intel core 2 Duo E4600 tournant sous winxp Pro, la fusion se fait correctement mais au moment de la libération des ressources je me retrouve avec un Access Violation en test comme en exe, que je n'ai jamais sur la machine de développement qui tourne sur un AMD Athlon 64 X2 Dual Core Processor 4400+ et Windows Vista Pro. Je précise que l'hyperthreading est désactivé et que la fusion sous Word marche sur les 2 configs, donc si quelqu'un a une piste, il recevra toute ma gratitude.
Le Modérateur a écrit :Merci de ne pas inventer et de respecter la syntaxe des balises : http://user.services.openoffice.org/fr/ ... c1369.html
Le balisage doit bien sûr être correctement orthographié (première lettre en majuscule puis le reste en minuscules).