|
Fenetre figée pendant l'execution d'un bouton |
Iniciado por bernard.berguer, 26,nov. 2004 15:06 - 5 respuestas |
| |
| | | |
|
| |
Publicado el 26,noviembre 2004 - 15:06 |
J'ai dans une fenêtre un bouton qui déclenche un traitement que je sais être un peu long. Je me connecte à une base de donnée ORACLE distante et par OLEDB, Je sélecte, avec une jointure sur 4 tables, plus de 7000 enregistrements et je met à jour ma base de donnée locale avec ces enregistrements.
Ce traitement n'est éxécuté que par quelques utilisateurs et jamais plus d'une fois par jour. Les 30 à 40 secondes d'attente leurs paraitront longue mais ils vont s'habituer 
J'ai une jauge pendant le parcours des enregistrements récupérés mais rien pendant la connexion à la base de données et l'execution de la requête. J'aurais aimé avoir une animation, qui les rassurent sur l'avancement du traitement, pendant l'execution de ce code.
J'ai essayé pluieurs solutions sans succés. 1 : Une jauge qui compte le temps piloté par un timer dans la fenêtre ou dans une autre. 2 : Un libellé qui défile avec le message "Veuillez patienter ..." Rien ne marche : Lorsque qu'on clique sur le bouton qui déclenche la procédure, la fenêtre se fige et l'animation s'arrête jusqu'à la fin du traitement alors que j'ai la main sur d'autres applications. N'y a t-il donc aucune solution pour "amuser" l'utilisateur et lui éviter d'éteindre sauvagement l'application en pensant qu'elle est bloquée ???? |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,noviembre 2004 - 17:45 |
Regarde l'aide WinDev sur "MultiTache" à placer dans toute boucle un peu longue...
"Bernard Berguer" <bernard.berguer@flaktwoods.com> a écrit dans le message de news: 41a72078@news.pcsoft.fr...
J'ai dans une fenêtre un bouton qui déclenche un traitement que je sais être un peu long. Je me connecte à une base de donnée ORACLE distante et par OLEDB, Je sélecte, avec une jointure sur 4 tables, plus de 7000 enregistrements et je met à jour ma base de donnée locale avec ces enregistrements.
Ce traitement n'est éxécuté que par quelques utilisateurs et jamais plus d'une fois par jour. Les 30 à 40 secondes d'attente leurs paraitront longue mais ils vont s'habituer 
J'ai une jauge pendant le parcours des enregistrements récupérés mais rien pendant la connexion à la base de données et l'execution de la requête. J'aurais aimé avoir une animation, qui les rassurent sur l'avancement du traitement, pendant l'execution de ce code.
J'ai essayé pluieurs solutions sans succés. 1 : Une jauge qui compte le temps piloté par un timer dans la fenêtre ou dans une autre. 2 : Un libellé qui défile avec le message "Veuillez patienter ..." Rien ne marche : Lorsque qu'on clique sur le bouton qui déclenche la procédure, la fenêtre se fige et l'animation s'arrête jusqu'à la fin du traitement alors que j'ai la main sur d'autres applications. N'y a t-il donc aucune solution pour "amuser" l'utilisateur et lui éviter d'éteindre sauvagement l'application en pensant qu'elle est bloquée ???? |
| |
| |
| | | |
|
| | |
| |
Publicado el 27,noviembre 2004 - 10:01 |
Salut,
Tu pourrai effectuer le traitement dans un thread ?
Laurent |
| |
| |
| | | |
|
| | |
| |
Publicado el 29,noviembre 2004 - 09:20 |
J'ai déjà un multitache dans la boucle de lecture du résultat, cCe qui me permet d'afficher une Jauge. Mon problème est, en fait, pendant l'éxecution de la requête car là plus rien ne bouge à l'écran dans la fenêtre et j'ai peur que l'utilisateur n'ai pas la patience d'attendre  Merci quand même pour la réponse. |
| |
| |
| | | |
|
| | |
| |
Publicado el 29,noviembre 2004 - 09:30 |
Je n'ai encore jamais essayé les threads et je ne suis pas sur que celà va "libérer" l'affichage de ma fenêtre. De plus comment faire pour que le reste du traitement attente la fin du thread pour continuer ... Je ne maîtrise pas complêtement le sujet mais je crois que c'est la voie qu'il faut que j'explore.
Merci encore |
| |
| |
| | | |
|
| | |
| |
Publicado el 29,noviembre 2004 - 09:54 |
Tu avais raison c'est vraiment la solution pour ce type de traitement. Je donne le code ci-dessous pour ceux qui aurait un jour besoin .
En effet, avec un thread, la fenêtre n'est plus figée et pour attendre la fin il y ala commande qui va bien
ThreadExécute("MonThread",threadNormal,"MaProcedureLongue") ThreadAttend("MonThread") |
| |
| |
| | | |
|
| | | | |
| | |
|