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

Figer l'écran pendant un traitement

7 réponses
Avatar
Laure
Bonjour,

J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
(Framework 1.1).

Je rencontre le problème suivant :
Lorqu'un utilisateur clique sur un bouton et qu'un long traitement commence,
rien ne l'empêche de cliquer sur un autre bouton. Le deuxième traitement met
en pause le premier, se déroule puis rend la main au premier pour qu'il
termine son exécution... Et forcément cela ne se passe pas très bien...
Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors d'un
traitement. A savoir que j'ai réalisé les développements suivants :
- je passe le curseur en sablier mais cela a l'air d'être sans effet, il
conserve sa forme d'origine...
- durant les longs traitements j'affiche une pop up contenant une barre de
défilement (et je peux toujours aller cliquer sur le menu de ma fenêtre
principale...)

Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas lancer deux
traitements en même temps ?

Merci d'avance,

Laure.

7 réponses

Avatar
Gilles TOURREAU
Le Wed, 05 Sep 2007 18:14:01 +0200, Laure
a écrit:

Bonjour,

J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
(Framework 1.1).

Je rencontre le problème suivant :
Lorqu'un utilisateur clique sur un bouton et qu'un long traitement
commence,
rien ne l'empêche de cliquer sur un autre bouton. Le deuxième traitement
met
en pause le premier, se déroule puis rend la main au premier pour qu'il
termine son exécution... Et forcément cela ne se passe pas très bien...
Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors
d'un
traitement. A savoir que j'ai réalisé les développements suivants :
- je passe le curseur en sablier mais cela a l'air d'être sans effet,
il
conserve sa forme d'origine...
- durant les longs traitements j'affiche une pop up contenant une
barre de
défilement (et je peux toujours aller cliquer sur le menu de ma fenêtre
principale...)

Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas lancer
deux
traitements en même temps ?

Merci d'avance,

Laure.





Vos traitements sont réalisé dans un Thread séparé de celui de l'affichage
?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Laure
Non je n'ai fait absolument aucun développement dans ce sens.Tout est dans le
même Thread.
Mon application fait un genre de multithreading toute seule et je ne
comprends pas pourquoi...

"Gilles TOURREAU" wrote:

Le Wed, 05 Sep 2007 18:14:01 +0200, Laure
a écrit:

> Bonjour,
>
> J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
> (Framework 1.1).
>
> Je rencontre le problème suivant :
> Lorqu'un utilisateur clique sur un bouton et qu'un long traitement
> commence,
> rien ne l'empêche de cliquer sur un autre bouton. Le deuxième traitement
> met
> en pause le premier, se déroule puis rend la main au premier pour qu'il
> termine son exécution... Et forcément cela ne se passe pas très bien...
> Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors
> d'un
> traitement. A savoir que j'ai réalisé les développements suivants :
> - je passe le curseur en sablier mais cela a l'air d'être sans effet,
> il
> conserve sa forme d'origine...
> - durant les longs traitements j'affiche une pop up contenant une
> barre de
> défilement (et je peux toujours aller cliquer sur le menu de ma fenêtre
> principale...)
>
> Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas lancer
> deux
> traitements en même temps ?
>
> Merci d'avance,
>
> Laure.
>
>

Vos traitements sont réalisé dans un Thread séparé de celui de l'affichage
?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Avatar
Gilles TOURREAU
Le Wed, 05 Sep 2007 18:58:08 +0200, Laure
a écrit:

Non je n'ai fait absolument aucun développement dans ce sens.Tout est
dans le
même Thread.
Mon application fait un genre de multithreading toute seule et je ne
comprends pas pourquoi...

"Gilles TOURREAU" wrote:

Le Wed, 05 Sep 2007 18:14:01 +0200, Laure
a écrit:

> Bonjour,
>
> J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
> (Framework 1.1).
>
> Je rencontre le problème suivant :
> Lorqu'un utilisateur clique sur un bouton et qu'un long traitement
> commence,
> rien ne l'empêche de cliquer sur un autre bouton. Le deuxième
traitement
> met
> en pause le premier, se déroule puis rend la main au premier pour
qu'il
> termine son exécution... Et forcément cela ne se passe pas très
bien...
> Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors
> d'un
> traitement. A savoir que j'ai réalisé les développements suivants :
> - je passe le curseur en sablier mais cela a l'air d'être sans
effet,
> il
> conserve sa forme d'origine...
> - durant les longs traitements j'affiche une pop up contenant une
> barre de
> défilement (et je peux toujours aller cliquer sur le menu de ma
fenêtre
> principale...)
>
> Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas
lancer
> deux
> traitements en même temps ?
>
> Merci d'avance,
>
> Laure.
>
>

Vos traitements sont réalisé dans un Thread séparé de celui de
l'affichage
?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr






Quel est le code de votre premier bouton ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
PierreSlideM
Je ferais un truc tout simple :
dans la precedure Click de chaque bouton et en admettant que les boutons
s'appellent Button1 et Button2

Button1.enabledúlse
Button2.enabled false

(Votre traitement)

Button1.enabled=true
Button2.enabled=true



"Laure" a écrit :

Bonjour,

J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
(Framework 1.1).

Je rencontre le problème suivant :
Lorqu'un utilisateur clique sur un bouton et qu'un long traitement commence,
rien ne l'empêche de cliquer sur un autre bouton. Le deuxième traitement met
en pause le premier, se déroule puis rend la main au premier pour qu'il
termine son exécution... Et forcément cela ne se passe pas très bien...
Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors d'un
traitement. A savoir que j'ai réalisé les développements suivants :
- je passe le curseur en sablier mais cela a l'air d'être sans effet, il
conserve sa forme d'origine...
- durant les longs traitements j'affiche une pop up contenant une barre de
défilement (et je peux toujours aller cliquer sur le menu de ma fenêtre
principale...)

Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas lancer deux
traitements en même temps ?

Merci d'avance,

Laure.




Avatar
Laure
Bonjour,

Je ne pouvais pas exactement opter pour cette solution puisque le traitement
existant détermine lui-même les boutons et les éléments de menu à activer ou
non (et je ne pouvais me permettre de modifier cela).

J'ai donc opté pour tout simplement :

myForm.Enabled = False
(mon traitement)
myForm.Enabled = True
myForm.Focus()

Comme cela je n'ai plus de problème... (même si je n'arrivais pas à
expliquer d'où venait le problème...)

Merci beaucoup pour vos réponses,

Laure.

"PierreSlideM" wrote:

Je ferais un truc tout simple :
dans la precedure Click de chaque bouton et en admettant que les boutons
s'appellent Button1 et Button2

Button1.enabledúlse
Button2.enabled false

(Votre traitement)

Button1.enabled=true
Button2.enabled=true



"Laure" a écrit :

> Bonjour,
>
> J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
> (Framework 1.1).
>
> Je rencontre le problème suivant :
> Lorqu'un utilisateur clique sur un bouton et qu'un long traitement commence,
> rien ne l'empêche de cliquer sur un autre bouton. Le deuxième traitement met
> en pause le premier, se déroule puis rend la main au premier pour qu'il
> termine son exécution... Et forcément cela ne se passe pas très bien...
> Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors d'un
> traitement. A savoir que j'ai réalisé les développements suivants :
> - je passe le curseur en sablier mais cela a l'air d'être sans effet, il
> conserve sa forme d'origine...
> - durant les longs traitements j'affiche une pop up contenant une barre de
> défilement (et je peux toujours aller cliquer sur le menu de ma fenêtre
> principale...)
>
> Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas lancer deux
> traitements en même temps ?
>
> Merci d'avance,
>
> Laure.
>
>


Avatar
Guillaume Davion
Le plus simple sinon serait peut-être de montrer la fenêtre de
progression de façon modale, ce qui empecherait de toucher à la
fenêtre appelante tant que la boite de progression ne serait pas
fermée.

On 10 sep, 10:10, Laure wrote:
Bonjour,

Je ne pouvais pas exactement opter pour cette solution puisque le traitem ent
existant détermine lui-même les boutons et les éléments de menu à activer ou
non (et je ne pouvais me permettre de modifier cela).

J'ai donc opté pour tout simplement :

myForm.Enabled = False
(mon traitement)
myForm.Enabled = True
myForm.Focus()

Comme cela je n'ai plus de problème... (même si je n'arrivais pas à
expliquer d'où venait le problème...)

Merci beaucoup pour vos réponses,

Laure.



"PierreSlideM" wrote:
> Je ferais un truc tout simple :
> dans la precedure Click de chaque bouton et en admettant que les boutons
> s'appellent Button1 et Button2

> Button1.enabledúlse
> Button2.enabled false

> (Votre traitement)

> Button1.enabled=true
> Button2.enabled=true

> "Laure" a écrit :

> > Bonjour,

> > J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
> > (Framework 1.1).

> > Je rencontre le problème suivant :
> > Lorqu'un utilisateur clique sur un bouton et qu'un long traitement co mmence,
> > rien ne l'empêche de cliquer sur un autre bouton. Le deuxième tra itement met
> > en pause le premier, se déroule puis rend la main au premier pour q u'il
> > termine son exécution... Et forcément cela ne se passe pas très bien...
> > Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors d'un
> > traitement. A savoir que j'ai réalisé les développements suivan ts :
> > - je passe le curseur en sablier mais cela a l'air d'être sans ef fet, il
> > conserve sa forme d'origine...
> > - durant les longs traitements j'affiche une pop up contenant une b arre de
> > défilement (et je peux toujours aller cliquer sur le menu de ma fen être
> > principale...)

> > Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas lanc er deux
> > traitements en même temps ?

> > Merci d'avance,

> > Laure.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
Laure
Effectivement cela aurait pu être une bonne solution mais dans mon cas la
boîte de progression ne couvre pas tout le temps d'attente voir même parfois
plusieurs fenêtres d'attente se suivent... l'utilisateur avait donc le temps
d'accéder à l'application...

J'avais quand même durant un temps implémenté cette solution mais elle a
vite posé problème... certaines pop up de confirmation étaient affichées
durant le traitement... derrrière la fenêtre d'attente...

Bref c'était un peu l'histoire sans fin ce truc :)

"Guillaume Davion" wrote:

Le plus simple sinon serait peut-être de montrer la fenêtre de
progression de façon modale, ce qui empecherait de toucher à la
fenêtre appelante tant que la boite de progression ne serait pas
fermée.

On 10 sep, 10:10, Laure wrote:
> Bonjour,
>
> Je ne pouvais pas exactement opter pour cette solution puisque le traitement
> existant détermine lui-même les boutons et les éléments de menu à activer ou
> non (et je ne pouvais me permettre de modifier cela).
>
> J'ai donc opté pour tout simplement :
>
> myForm.Enabled = False
> (mon traitement)
> myForm.Enabled = True
> myForm.Focus()
>
> Comme cela je n'ai plus de problème... (même si je n'arrivais pas à
> expliquer d'où venait le problème...)
>
> Merci beaucoup pour vos réponses,
>
> Laure.
>
>
>
> "PierreSlideM" wrote:
> > Je ferais un truc tout simple :
> > dans la precedure Click de chaque bouton et en admettant que les boutons
> > s'appellent Button1 et Button2
>
> > Button1.enabledúlse
> > Button2.enabled false
>
> > (Votre traitement)
>
> > Button1.enabled=true
> > Button2.enabled=true
>
> > "Laure" a écrit :
>
> > > Bonjour,
>
> > > J'utilise actuellement des Windows Forms en VB.Net sous VS.Net 2003
> > > (Framework 1.1).
>
> > > Je rencontre le problème suivant :
> > > Lorqu'un utilisateur clique sur un bouton et qu'un long traitement commence,
> > > rien ne l'empêche de cliquer sur un autre bouton. Le deuxième traitement met
> > > en pause le premier, se déroule puis rend la main au premier pour qu'il
> > > termine son exécution... Et forcément cela ne se passe pas très bien...
> > > Je voudrai donc comprendre pourquoi mon interface ne se fige pas lors d'un
> > > traitement. A savoir que j'ai réalisé les développements suivants :
> > > - je passe le curseur en sablier mais cela a l'air d'être sans effet, il
> > > conserve sa forme d'origine...
> > > - durant les longs traitements j'affiche une pop up contenant une barre de
> > > défilement (et je peux toujours aller cliquer sur le menu de ma fenêtre
> > > principale...)
>
> > > Qu'est ce que je peux faire pour que l'utilisateur ne puisse pas lancer deux
> > > traitements en même temps ?
>
> > > Merci d'avance,
>
> > > Laure.- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -