Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation de lock dans des évennements

3 réponses
Avatar
Ornette
Bonjour,

j'utilise des évennements pour faire communiquer une page master avec une
page de contenu.
L'application est déjà développée et c'est la seule solution que j'ai pu
trouver.

En gros, lorsque qq change de page dans le menu, je souhaite prévenir la
page de contenu et lui permettre d'annuler, ou de quitter en sauvegardant
ses données. En gros, la master envoie un event, en fonction du résultat
e.cancel ou non elle fait un redirect

A la "main" (j'ajoute ou non e.cancel) ça fonctionne très bien.

Par contre, lorsque j'affiche une popup avant de faire e.cancel, j'ai un
problème : l'evennement est déclanché mais le code de la master s'execute
avant même que le popup soit affichée. J'ai contourné le problème en passant
la page à afficher à la page de contenu et donc c'est elle qui fait ou non
le redirect. Mais ce n'est pas très propre et je n'ai pas trop à avoir à
ajouter ça dans chaque page de contenu...

Est-ce que lock ou une autre astuce permettrait de bloquer le retour de
l'event pour me laisser afficher ma popup et attendre le résultat ?

Cordialement,
Ornette.

3 réponses

Avatar
Paul Bacelar
Je ne comprends pas votre problème mais je sais que lock n'a rien à voir
avec votre problématique.

lock sert pour régler des problèmes d'accès concurrent entre thread sur des
données, donc rien à voir avec de la sérialisation d'événement.
--
Paul Bacelar
MVP VC++


"Ornette" wrote in message
news:
Bonjour,

j'utilise des évennements pour faire communiquer une page master avec une
page de contenu.
L'application est déjà développée et c'est la seule solution que j'ai pu
trouver.

En gros, lorsque qq change de page dans le menu, je souhaite prévenir la
page de contenu et lui permettre d'annuler, ou de quitter en sauvegardant
ses données. En gros, la master envoie un event, en fonction du résultat
e.cancel ou non elle fait un redirect

A la "main" (j'ajoute ou non e.cancel) ça fonctionne très bien.

Par contre, lorsque j'affiche une popup avant de faire e.cancel, j'ai un
problème : l'evennement est déclanché mais le code de la master s'execute
avant même que le popup soit affichée. J'ai contourné le problème en
passant la page à afficher à la page de contenu et donc c'est elle qui
fait ou non le redirect. Mais ce n'est pas très propre et je n'ai pas trop
à avoir à ajouter ça dans chaque page de contenu...

Est-ce que lock ou une autre astuce permettrait de bloquer le retour de
l'event pour me laisser afficher ma popup et attendre le résultat ?

Cordialement,
Ornette.


Avatar
Ornette
Bonjour,

merci pour cette information.

Mon fonctionnement est le suivant :

- Ma page master envoie un évennement lors d'un clic sur un menu
- La page fille (abonné à l'event) lance une popup (ajax) et en fonction de
la réponse fait e.cancel = true ou false

Au final, la popup n'est pas affichée et e.cancel jamais affecté car le code
retourne directement à la page master et cela force un PostBack.

En gros, dès que la page master lance un event, on a un postback qui s'opère
avant même que le code de traitement de l'event de la page de contenu ne ce
soit executté.

L'idée est :
QQ clic un lien sur Master. Master annonce à la page de contenu : "demande
de changement de page, t'es OK ?"
La page de contenu regarde si l'utilisateur a modifié des données et si
c'est le cas demande à l'utilisateur "voulez vous quitter sans sauver ?".
En fonction de la réponse la page de contenu répond OK ou NON à la page
maitre, et le redirect est effectif ou non.

Dans mon cas, le redirect est effectué avant même d'attendre la réponse du
popup.
Le workaround est de faire le redirect ou non coté page de contenu mais ce
n'est pas très propre.


"Paul Bacelar" a écrit dans le message
de news:
Je ne comprends pas votre problème mais je sais que lock n'a rien à voir
avec votre problématique.

lock sert pour régler des problèmes d'accès concurrent entre thread sur
des données, donc rien à voir avec de la sérialisation d'événement.
--
Paul Bacelar
MVP VC++


"Ornette" wrote in message
news:
Bonjour,

j'utilise des évennements pour faire communiquer une page master avec une
page de contenu.
L'application est déjà développée et c'est la seule solution que j'ai pu
trouver.

En gros, lorsque qq change de page dans le menu, je souhaite prévenir la
page de contenu et lui permettre d'annuler, ou de quitter en sauvegardant
ses données. En gros, la master envoie un event, en fonction du résultat
e.cancel ou non elle fait un redirect

A la "main" (j'ajoute ou non e.cancel) ça fonctionne très bien.

Par contre, lorsque j'affiche une popup avant de faire e.cancel, j'ai un
problème : l'evennement est déclanché mais le code de la master s'execute
avant même que le popup soit affichée. J'ai contourné le problème en
passant la page à afficher à la page de contenu et donc c'est elle qui
fait ou non le redirect. Mais ce n'est pas très propre et je n'ai pas
trop à avoir à ajouter ça dans chaque page de contenu...

Est-ce que lock ou une autre astuce permettrait de bloquer le retour de
l'event pour me laisser afficher ma popup et attendre le résultat ?

Cordialement,
Ornette.






Avatar
Paul Bacelar
L'envoie d'évènement est un mécanisme asynchrone.
Pouvez-vous poster un projet qui reproduit le problème ?
--
Paul Bacelar
MVP VC++

"Ornette" wrote in message
news:
Bonjour,

merci pour cette information.

Mon fonctionnement est le suivant :

- Ma page master envoie un évennement lors d'un clic sur un menu
- La page fille (abonné à l'event) lance une popup (ajax) et en fonction
de la réponse fait e.cancel = true ou false

Au final, la popup n'est pas affichée et e.cancel jamais affecté car le
code retourne directement à la page master et cela force un PostBack.

En gros, dès que la page master lance un event, on a un postback qui
s'opère avant même que le code de traitement de l'event de la page de
contenu ne ce soit executté.

L'idée est :
QQ clic un lien sur Master. Master annonce à la page de contenu : "demande
de changement de page, t'es OK ?"
La page de contenu regarde si l'utilisateur a modifié des données et si
c'est le cas demande à l'utilisateur "voulez vous quitter sans sauver ?".
En fonction de la réponse la page de contenu répond OK ou NON à la page
maitre, et le redirect est effectif ou non.

Dans mon cas, le redirect est effectué avant même d'attendre la réponse du
popup.
Le workaround est de faire le redirect ou non coté page de contenu mais ce
n'est pas très propre.


"Paul Bacelar" a écrit dans le message
de news:
Je ne comprends pas votre problème mais je sais que lock n'a rien à voir
avec votre problématique.

lock sert pour régler des problèmes d'accès concurrent entre thread sur
des données, donc rien à voir avec de la sérialisation d'événement.
--
Paul Bacelar
MVP VC++


"Ornette" wrote in message
news:
Bonjour,

j'utilise des évennements pour faire communiquer une page master avec
une page de contenu.
L'application est déjà développée et c'est la seule solution que j'ai pu
trouver.

En gros, lorsque qq change de page dans le menu, je souhaite prévenir la
page de contenu et lui permettre d'annuler, ou de quitter en
sauvegardant ses données. En gros, la master envoie un event, en
fonction du résultat e.cancel ou non elle fait un redirect

A la "main" (j'ajoute ou non e.cancel) ça fonctionne très bien.

Par contre, lorsque j'affiche une popup avant de faire e.cancel, j'ai un
problème : l'evennement est déclanché mais le code de la master
s'execute avant même que le popup soit affichée. J'ai contourné le
problème en passant la page à afficher à la page de contenu et donc
c'est elle qui fait ou non le redirect. Mais ce n'est pas très propre et
je n'ai pas trop à avoir à ajouter ça dans chaque page de contenu...

Est-ce que lock ou une autre astuce permettrait de bloquer le retour de
l'event pour me laisser afficher ma popup et attendre le résultat ?

Cordialement,
Ornette.