j'ai un problème avec un composant que j'ai développé avec Visual C++
6.0. Le composant fonctionne très bien lorsque je l'utilise avec VB6.
Là où il commence à poser problème, c'est avec Internet Explorer,
lorsque je l'utilise dans une page html. J'ai l'impression quelques
fois que le composant ne passe pas dans le constructeur ou alors qu'il
charge un composant sans l'initialiser à partir du cache.
j'ai géré un compteur d'instance.
Quand j'essaie de deggubber avec le debbuger de Visual C++, tout
marche comme il faut (peut-etre que le debbugger s'occupe de vider la
mémoire ou force le passage dans le constructeur (pas d'histoire de
cache dans ce cas là))
Quand j'utilise le meme activeX (compilé en debug) mais sans passer
par le debugger, là, ca ne marche plus correctement.
J'ai essayé de placer des MessageBox dans le constructeur pour tracer
(notamment le compteur d'instance), mais le simple fait de mettre une
messagebox fait que tout va bien en runtime, par contre, cette ligne
en commentaire, ca ne remarche plus correctement (messagebox a un
pouvoir mystique ???)
Je ne sais plus trop quoi faire, me manque-t-il des connaissances sur
la gestion des activex par internet explorer ?
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
Patrick Philippot
Nicolas Hilaire wrote:
j'ai un problème avec un composant que j'ai développé avec Visual C++ 6.0. Le composant fonctionne très bien lorsque je l'utilise avec VB6. Là où il commence à poser problème, c'est avec Internet Explorer, lorsque je l'utilise dans une page html. J'ai l'impression quelques fois que le composant ne passe pas dans le constructeur ou alors qu'il charge un composant sans l'initialiser à partir du cache.
Il y a donc un bug quelque part... Quand vous dîtes que vous l'utilisez dans IE, ça veut dire quoi exactement? Sur la même machine que la machine de développement? (sinon, la machine en question a-t-elle les DLLs MFC de debug?) En chargeant une page HTML séparée? En lançant IE depuis VC++ et en chargeant la page en question?
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.fr
Nicolas Hilaire wrote:
j'ai un problème avec un composant que j'ai développé avec Visual C++
6.0. Le composant fonctionne très bien lorsque je l'utilise avec VB6.
Là où il commence à poser problème, c'est avec Internet Explorer,
lorsque je l'utilise dans une page html. J'ai l'impression quelques
fois que le composant ne passe pas dans le constructeur ou alors qu'il
charge un composant sans l'initialiser à partir du cache.
Il y a donc un bug quelque part... Quand vous dîtes que vous l'utilisez
dans IE, ça veut dire quoi exactement? Sur la même machine que la
machine de développement? (sinon, la machine en question a-t-elle les
DLLs MFC de debug?) En chargeant une page HTML séparée? En lançant IE
depuis VC++ et en chargeant la page en question?
--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.fr
j'ai un problème avec un composant que j'ai développé avec Visual C++ 6.0. Le composant fonctionne très bien lorsque je l'utilise avec VB6. Là où il commence à poser problème, c'est avec Internet Explorer, lorsque je l'utilise dans une page html. J'ai l'impression quelques fois que le composant ne passe pas dans le constructeur ou alors qu'il charge un composant sans l'initialiser à partir du cache.
Il y a donc un bug quelque part... Quand vous dîtes que vous l'utilisez dans IE, ça veut dire quoi exactement? Sur la même machine que la machine de développement? (sinon, la machine en question a-t-elle les DLLs MFC de debug?) En chargeant une page HTML séparée? En lançant IE depuis VC++ et en chargeant la page en question?
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.fr
nicolas.hilaire
Tout d'abord , merci de votre attention à mon problème.
je suis sur un poste de développement (donc j'ai toutes les dlls qu'il me faut), et j'utilise donc mon activeX en l'instanciant dans une page HTML avec les balises <OBJECT>.
Pour etre encore plus précis, c'est lorsque je veux instancier plusieurs objets dans la meme page ; je gere donc un instance unique de données partagées. Dans une form VB tout est ok (preuve que ca marche).
Les effets dans IE sont ainsi :
- page IE lancée simplement ==> marche pas (comportement aléatoire) - page IE lancée à partir du debbugger de VC++ ==> marche tres bien - page IE lancée simplement, mais en rajoutant des messagebox pour un débug "à la main" ==> marche très bien aussi
ce que je cherche en fait, c'est vers quoi orienter mes recherches ? est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer correctement ou instancier correctement les objets ? pourquoi les messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre une autre solution ???
Merci de votre aide
Nicolas H.
"Patrick Philippot" wrote in message news:<caccev$2at2$...
Nicolas Hilaire wrote: > j'ai un problème avec un composant que j'ai développé avec Visual C++ > 6.0. Le composant fonctionne très bien lorsque je l'utilise avec VB6. > Là où il commence à poser problème, c'est avec Internet Explorer, > lorsque je l'utilise dans une page html. J'ai l'impression quelques > fois que le composant ne passe pas dans le constructeur ou alors qu'il > charge un composant sans l'initialiser à partir du cache.
Il y a donc un bug quelque part... Quand vous dîtes que vous l'utilisez dans IE, ça veut dire quoi exactement? Sur la même machine que la machine de développement? (sinon, la machine en question a-t-elle les DLLs MFC de debug?) En chargeant une page HTML séparée? En lançant IE depuis VC++ et en chargeant la page en question?
Tout d'abord , merci de votre attention à mon problème.
je suis sur un poste de développement (donc j'ai toutes les dlls qu'il
me faut), et j'utilise donc mon activeX en l'instanciant dans une page
HTML avec les balises <OBJECT>.
Pour etre encore plus précis, c'est lorsque je veux instancier
plusieurs objets dans la meme page ; je gere donc un instance unique
de données partagées. Dans une form VB tout est ok (preuve que ca
marche).
Les effets dans IE sont ainsi :
- page IE lancée simplement ==> marche pas (comportement aléatoire)
- page IE lancée à partir du debbugger de VC++ ==> marche tres bien
- page IE lancée simplement, mais en rajoutant des messagebox pour un
débug "à la main" ==> marche très bien aussi
ce que je cherche en fait, c'est vers quoi orienter mes recherches ?
est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer
correctement ou instancier correctement les objets ? pourquoi les
messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre
une autre solution ???
Merci de votre aide
Nicolas H.
"Patrick Philippot" <patrick.philippot@mainsoft.xx> wrote in message news:<caccev$2at2$1@biggoron.nerim.net>...
Nicolas Hilaire wrote:
> j'ai un problème avec un composant que j'ai développé avec Visual C++
> 6.0. Le composant fonctionne très bien lorsque je l'utilise avec VB6.
> Là où il commence à poser problème, c'est avec Internet Explorer,
> lorsque je l'utilise dans une page html. J'ai l'impression quelques
> fois que le composant ne passe pas dans le constructeur ou alors qu'il
> charge un composant sans l'initialiser à partir du cache.
Il y a donc un bug quelque part... Quand vous dîtes que vous l'utilisez
dans IE, ça veut dire quoi exactement? Sur la même machine que la
machine de développement? (sinon, la machine en question a-t-elle les
DLLs MFC de debug?) En chargeant une page HTML séparée? En lançant IE
depuis VC++ et en chargeant la page en question?
Tout d'abord , merci de votre attention à mon problème.
je suis sur un poste de développement (donc j'ai toutes les dlls qu'il me faut), et j'utilise donc mon activeX en l'instanciant dans une page HTML avec les balises <OBJECT>.
Pour etre encore plus précis, c'est lorsque je veux instancier plusieurs objets dans la meme page ; je gere donc un instance unique de données partagées. Dans une form VB tout est ok (preuve que ca marche).
Les effets dans IE sont ainsi :
- page IE lancée simplement ==> marche pas (comportement aléatoire) - page IE lancée à partir du debbugger de VC++ ==> marche tres bien - page IE lancée simplement, mais en rajoutant des messagebox pour un débug "à la main" ==> marche très bien aussi
ce que je cherche en fait, c'est vers quoi orienter mes recherches ? est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer correctement ou instancier correctement les objets ? pourquoi les messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre une autre solution ???
Merci de votre aide
Nicolas H.
"Patrick Philippot" wrote in message news:<caccev$2at2$...
Nicolas Hilaire wrote: > j'ai un problème avec un composant que j'ai développé avec Visual C++ > 6.0. Le composant fonctionne très bien lorsque je l'utilise avec VB6. > Là où il commence à poser problème, c'est avec Internet Explorer, > lorsque je l'utilise dans une page html. J'ai l'impression quelques > fois que le composant ne passe pas dans le constructeur ou alors qu'il > charge un composant sans l'initialiser à partir du cache.
Il y a donc un bug quelque part... Quand vous dîtes que vous l'utilisez dans IE, ça veut dire quoi exactement? Sur la même machine que la machine de développement? (sinon, la machine en question a-t-elle les DLLs MFC de debug?) En chargeant une page HTML séparée? En lançant IE depuis VC++ et en chargeant la page en question?
Patrick Philippot
Nicolas Hilaire wrote:
Pour etre encore plus précis, c'est lorsque je veux instancier plusieurs objets dans la meme page ;
C'est effectivement une info qui change tout.
je gere donc un instance unique de données partagées.
Pouvez vous détailler? Je ne comprends pas bien ce que cela signifie.
ce que je cherche en fait, c'est vers quoi orienter mes recherches ? est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer correctement ou instancier correctement les objets ? pourquoi les messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre une autre solution ???
La réponse est quasiment dans la question :-) Si le fait d'activer une message box à l'initialisation supprime le problème, ceci semble indiquer un problème de concurrence ou de réentrance. Le fait d'afficher la MessageBox change le timing de chargement. Il y a probablement dans votre code un accès simultané à une ressource partagée entre les différentes instances que vous créez sur la page.
N'oubliez pas que le chargement des objets est asynchrone. Si tous vos contrôles accèdent à une ressource partagée pendant leur initialisation (est-ce que c'est ce que votre phrase "je gere donc un instance unique de données partagées" signifie?) et que ces accès ne sont pas synchronisés, il y a effectivement des chances pour que ça se passe mal.
En passant, cela veut que tout code de scripting dans votre page doit attendre le chargement complet de la page. Voir
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.fr
Nicolas Hilaire wrote:
Pour etre encore plus précis, c'est lorsque je veux
instancier plusieurs objets dans la meme page ;
C'est effectivement une info qui change tout.
je gere donc un instance unique de données partagées.
Pouvez vous détailler? Je ne comprends pas bien ce que cela signifie.
ce que je cherche en fait, c'est vers quoi orienter mes recherches ?
est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer
correctement ou instancier correctement les objets ? pourquoi les
messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre
une autre solution ???
La réponse est quasiment dans la question :-)
Si le fait d'activer une message box à l'initialisation supprime le
problème, ceci semble indiquer un problème de concurrence ou de
réentrance. Le fait d'afficher la MessageBox change le timing de
chargement. Il y a probablement dans votre code un accès simultané à une
ressource partagée entre les différentes instances que vous créez sur la
page.
N'oubliez pas que le chargement des objets est asynchrone. Si tous vos
contrôles accèdent à une ressource partagée pendant leur initialisation
(est-ce que c'est ce que votre phrase "je gere donc un instance unique
de données partagées" signifie?) et que ces accès ne sont pas
synchronisés, il y a effectivement des chances pour que ça se passe mal.
En passant, cela veut que tout code de scripting dans votre page doit
attendre le chargement complet de la page. Voir
Pour etre encore plus précis, c'est lorsque je veux instancier plusieurs objets dans la meme page ;
C'est effectivement une info qui change tout.
je gere donc un instance unique de données partagées.
Pouvez vous détailler? Je ne comprends pas bien ce que cela signifie.
ce que je cherche en fait, c'est vers quoi orienter mes recherches ? est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer correctement ou instancier correctement les objets ? pourquoi les messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre une autre solution ???
La réponse est quasiment dans la question :-) Si le fait d'activer une message box à l'initialisation supprime le problème, ceci semble indiquer un problème de concurrence ou de réentrance. Le fait d'afficher la MessageBox change le timing de chargement. Il y a probablement dans votre code un accès simultané à une ressource partagée entre les différentes instances que vous créez sur la page.
N'oubliez pas que le chargement des objets est asynchrone. Si tous vos contrôles accèdent à une ressource partagée pendant leur initialisation (est-ce que c'est ce que votre phrase "je gere donc un instance unique de données partagées" signifie?) et que ces accès ne sont pas synchronisés, il y a effectivement des chances pour que ça se passe mal.
En passant, cela veut que tout code de scripting dans votre page doit attendre le chargement complet de la page. Voir
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.fr
nicolas.hilaire
Merci de votre aide.
j'ai rajouté un laps de temps entre les créations des ActiveX et il ne semble plus y avoir de problèmes. Il doit s'agir comme vous l'avez dit d'un problème d'accès concurrent.
Je vais regarder de ce coté là et vous remercie grandement pour cette piste judicieuse à explorer.
Bien cordialement
Nicolas H.
"Patrick Philippot" wrote in message news:<cajoqg$2rlu$...
Nicolas Hilaire wrote:
>Pour etre encore plus précis, c'est lorsque je veux >instancier plusieurs objets dans la meme page ;
C'est effectivement une info qui change tout.
> je gere donc un instance unique de données partagées.
Pouvez vous détailler? Je ne comprends pas bien ce que cela signifie.
> ce que je cherche en fait, c'est vers quoi orienter mes recherches ? > est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer > correctement ou instancier correctement les objets ? pourquoi les > messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre > une autre solution ???
La réponse est quasiment dans la question :-) Si le fait d'activer une message box à l'initialisation supprime le problème, ceci semble indiquer un problème de concurrence ou de réentrance. Le fait d'afficher la MessageBox change le timing de chargement. Il y a probablement dans votre code un accès simultané à une ressource partagée entre les différentes instances que vous créez sur la page.
N'oubliez pas que le chargement des objets est asynchrone. Si tous vos contrôles accèdent à une ressource partagée pendant leur initialisation (est-ce que c'est ce que votre phrase "je gere donc un instance unique de données partagées" signifie?) et que ces accès ne sont pas synchronisés, il y a effectivement des chances pour que ça se passe mal.
En passant, cela veut que tout code de scripting dans votre page doit attendre le chargement complet de la page. Voir
j'ai rajouté un laps de temps entre les créations des ActiveX et il ne
semble plus y avoir de problèmes. Il doit s'agir comme vous l'avez dit
d'un problème d'accès concurrent.
Je vais regarder de ce coté là et vous remercie grandement pour cette
piste judicieuse à explorer.
Bien cordialement
Nicolas H.
"Patrick Philippot" <patrick.philippot@mainsoft.xx> wrote in message news:<cajoqg$2rlu$1@biggoron.nerim.net>...
Nicolas Hilaire wrote:
>Pour etre encore plus précis, c'est lorsque je veux
>instancier plusieurs objets dans la meme page ;
C'est effectivement une info qui change tout.
> je gere donc un instance unique de données partagées.
Pouvez vous détailler? Je ne comprends pas bien ce que cela signifie.
> ce que je cherche en fait, c'est vers quoi orienter mes recherches ?
> est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer
> correctement ou instancier correctement les objets ? pourquoi les
> messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre
> une autre solution ???
La réponse est quasiment dans la question :-)
Si le fait d'activer une message box à l'initialisation supprime le
problème, ceci semble indiquer un problème de concurrence ou de
réentrance. Le fait d'afficher la MessageBox change le timing de
chargement. Il y a probablement dans votre code un accès simultané à une
ressource partagée entre les différentes instances que vous créez sur la
page.
N'oubliez pas que le chargement des objets est asynchrone. Si tous vos
contrôles accèdent à une ressource partagée pendant leur initialisation
(est-ce que c'est ce que votre phrase "je gere donc un instance unique
de données partagées" signifie?) et que ces accès ne sont pas
synchronisés, il y a effectivement des chances pour que ça se passe mal.
En passant, cela veut que tout code de scripting dans votre page doit
attendre le chargement complet de la page. Voir
j'ai rajouté un laps de temps entre les créations des ActiveX et il ne semble plus y avoir de problèmes. Il doit s'agir comme vous l'avez dit d'un problème d'accès concurrent.
Je vais regarder de ce coté là et vous remercie grandement pour cette piste judicieuse à explorer.
Bien cordialement
Nicolas H.
"Patrick Philippot" wrote in message news:<cajoqg$2rlu$...
Nicolas Hilaire wrote:
>Pour etre encore plus précis, c'est lorsque je veux >instancier plusieurs objets dans la meme page ;
C'est effectivement une info qui change tout.
> je gere donc un instance unique de données partagées.
Pouvez vous détailler? Je ne comprends pas bien ce que cela signifie.
> ce que je cherche en fait, c'est vers quoi orienter mes recherches ? > est-ce un problème de cache IE ? est-ce qu'il ne sait pas liberer > correctement ou instancier correctement les objets ? pourquoi les > messagebox ont-elles un effet bénéfique sur mon activeX ? ou peut-etre > une autre solution ???
La réponse est quasiment dans la question :-) Si le fait d'activer une message box à l'initialisation supprime le problème, ceci semble indiquer un problème de concurrence ou de réentrance. Le fait d'afficher la MessageBox change le timing de chargement. Il y a probablement dans votre code un accès simultané à une ressource partagée entre les différentes instances que vous créez sur la page.
N'oubliez pas que le chargement des objets est asynchrone. Si tous vos contrôles accèdent à une ressource partagée pendant leur initialisation (est-ce que c'est ce que votre phrase "je gere donc un instance unique de données partagées" signifie?) et que ces accès ne sont pas synchronisés, il y a effectivement des chances pour que ça se passe mal.
En passant, cela veut que tout code de scripting dans votre page doit attendre le chargement complet de la page. Voir