Probleme progressbar

peacand Messages postés 16 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 24 octobre 2007 - 20 oct. 2007 à 22:31
cs_baz187rem Messages postés 78 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 21 juin 2010 - 8 sept. 2009 à 15:58
Bonjour , j'ai un probleme avec une progressbar sur un code vraiment tout bete mais je sais pas d'ou vient le probleme . J'ai une fonction sendmail qui envoie un mail avec des données rentrées dans des champs de textes , tout bete . Pour montrer que le prog bug pas pendant l'envoi du mail ( quelques secondes ) je voulais mettre une progressbar en mode marquee.
Le probleme c'est qu'en fait , ma progress bar démarre une fois que le mail a été envoyé , pourtant dans le code il y a :

pb.Visible = False

 Private Sub btnenvoyer_Click(....)
            pb.Visible = True
           
            sendmail(.....)
            pb.Visible = False
           
 End Sub

Je comprend pas pourquoi la progressbar attend la fin de la fonction sendmail pour etre visible alors que l'instruction est donnée avant . Si quelqu'un voit le probleme je suis preneur . Merci d'avance

7 réponses

Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
20 oct. 2007 à 23:11
Par ce que to appel à sendmail() est synchrone.
Il faut que tu lances ton sendmail dans un second thread à mon avis.
0
Arnal88 Messages postés 96 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 25 avril 2009
20 oct. 2007 à 23:12
Salut,

C'est normal.. L'instruction SendMail est exécutée avant que l'affichage de la ProgressBar se fasse..
Il faut que tu forces l'affichage de ta ProgressBar avec pb.Refresh juste avant ton SendMail.

Mais ta pb ne bougera pas, car les ressources seront prises par l'envoi de mail..
Pour ne pas figer l'interface graphique, il faut exécuter l'envoi de mail sur un thread séparé, main franchement, c'est beaucoup de code pour pas grand chose...

Il faudra te contenter d'une ProgressBar immobile...
0
peacand Messages postés 16 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 24 octobre 2007
21 oct. 2007 à 08:49
C'est bizarre quand meme que le prog ne puisse pas faire deux choses en meme temps.C'est pas beaucoup demandé quand meme .Bon et bien je vais me contenter d'une appartition d'un "Veuillez patienter svp " .
En tout cas merci beaucoup tout le monde !!
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
21 oct. 2007 à 11:26
Il peut faire plusieurs choses en même temps, si tu le lui demande en travaillant aec plusieurs threads.
En VB2005 ce n'est pas très compliqué, le framework faisant le plus gros du boulot.
Regardes dans l'aide en ligne, il me semble qu'il y a un exemple de code que tu pourras adapter facilement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
peacand Messages postés 16 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 24 octobre 2007
21 oct. 2007 à 11:34
Non mais en fait j'ai mis le fameux label "Envoi en cours..." et ca
passe tres bien finalement.Merci du conseil je m'en servirais surement
un jour.
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
21 oct. 2007 à 14:43
Salut à tous,

Il n'y a pas d'équivalent de DoEvents(Vb6) en .net ? Cela pourrais faire fontionner ta Progress en plaçant un DoEvents dans ta sub SendMail...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_baz187rem Messages postés 78 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 21 juin 2010 1
8 sept. 2009 à 15:58
J'arrive un peu après la guerre lol mais en .net il y a le application.doEvents qui remplace le DoEvents de vb6.

D'autre part Kristof_Koder n'a part tort. Fait un appel asynchrone de ta fonction :)

B@Z187Rem
0
Rejoignez-nous