PB: refresh pendant traitement lourd

cs_avabien Messages postés 2 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 25 février 2004 - 25 févr. 2004 à 15:14
cs_sebV Messages postés 107 Date d'inscription mardi 20 août 2002 Statut Membre Dernière intervention 15 octobre 2004 - 25 févr. 2004 à 19:36
Bonjour,

Alors voila, je lance une appli qui a de nombreux traitements lourds de transfert entre BDD (plusieurs heures). Et des extractions lourdes vers Excel.

Pendant ces transfers et extractions, l'appli est comme planté, l'affichage se gèle, mes controles timer ne répondent plus.

Comment faire pour continuer à faire fonctionner un compteur de temp, une progresse bar ou un bouton annuler sur l'appli ???

J'ai cherché à droite à gauche, on me parle de DoEvent, de multithread...

Quelqu'un aurait il une solution à un problème similaire ? please

Merci d'avance
?-)

3 réponses

cs_sebV Messages postés 107 Date d'inscription mardi 20 août 2002 Statut Membre Dernière intervention 15 octobre 2004
25 févr. 2004 à 15:21
Effectivement,tu peux utiliser DoEvent dans tes traitement, ceci permet d'interrompre un instant la fonction pour tester les evenement, sinon tu pourrais utiliser les fonction qui rfraichisses les les composants voulu, mais je crois que le mieux c'est DoEvent.
Pour du multiThread, je sais pas comment on fair sous VB, ca doit bien ce faire, mais comme je sais pas, regarde dans les options du proget je croit qu'il y a un truc la dessus, j'ai pas VB sous le nez la.

*******Sébastien VALAT*********
*****Mon site : Progra-net : www.progra-net.fr/*****
0
cs_avabien Messages postés 2 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 25 février 2004
25 févr. 2004 à 15:43
Je suis perplexe sur le DoEvents car il ne me permet de reprendre la main qu'entre mes traitements...

Si j'ai une requete qui met 20minutes pour s'executer, suivi de 3 heures d'insertions, je souhaiterais avoir la main sur l'application en permanence.

Avec les DoEvents, cela equivaud à un refresh au bout de 20minutes puis un nouveau refresh à la fin des 3 heures d'insert.

mhmm, dans mon cas, mon compteur de durée dans le formulaire de "patience" reste bloqué à 00h00m00s depuis le debut jusqu'a la fin de l'execution de la fonction. Alors meme si il affiche 00h20m00s après 20minutes ou 03h20m00s après 03h20m00s, c'est pas bon, il n'en reste pas moins fixé.

?-)
0
cs_sebV Messages postés 107 Date d'inscription mardi 20 août 2002 Statut Membre Dernière intervention 15 octobre 2004
25 févr. 2004 à 19:36
Non, justement, tu places me DoEvent dans tes routine, à moins que ce ne soit pas toi qui les gères.
Par exemple à la fin d'un for que tu juge utiliser un temps resonable, ou dans ce for si il est trop long, ca aura pour effet de ralentir ton programme mais bon.
Sinon, il y a le multi-thread à condition que ce soit géré, je regarderais quand je serais sous windows pour lancer VB.

*******Sébastien VALAT*********
*****Mon site : Progra-net : www.progra-net.com/*****
0
Rejoignez-nous