Retarder un control

taillecrayon Messages postés 109 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 23 novembre 2010 - 22 janv. 2005 à 12:39
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 23 janv. 2005 à 02:46
Bonjour, le dernier code de Cyril m'a permis de me lancer dans l'animation:
j'arrive à faire un beep au bout de 3 secondes!mais pas moyen de modifier
des éléments de la page:
public othread as thread
public timer1 as new system.timers.timer()


sub page_load(sender as object,e as eventargs)
othread=new thread(addressof main)
othread.start()
end sub


public sub main()
AddHandler timer1.elapsed,AddressOf Coucou
timer1.interval="3000"
Timer1.Enabled="true"
timer1.start()
timer1.autoreset=false
end sub


public Sub Coucou(byval Sender as object,byval e as elapsedeventargs)
beep 'ça fonctionne
label2.text="zezeze" 'modification du texte ignorée
end sub


Merci de vos conseils,salut

taillecrayon

1 réponse

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 janv. 2005 à 02:46
Tu veux modifier quoi ?



Je te deconseil de mettre ce code, dans une page, met le dans le
global.asax.vb, au moins tu seras sur qu'il sera executé a chaque
chargement du site.


Je pense que tu veux savoir pourquoi le label2.text fonctionne pas,
c'est tout simple, il faut que tu comprennes le multithreading, ce que
tu fais, tu charges la page, tu lances toutes tes 3 secondes ton beep,
met tu pourras plus réecrire dans la page, car elle a finit de charger
depuis belle lurette elle, et puis je suis pas sur que tu puisses
modifier ca a partir d'un autre thread, j'ai jamais testé.



pour faire ce que tu veux, c'est évident que ca marche pas, ta page
elle est envoyé, ok qui demande de la recharger ? c'est le client pas
le serveur, quand je dis le client, c'est soit lui avec la souris, soit
du js, et puis qui te dit que le client est encore en ligne la ? c'est
toute ces raisons qui font que tu ne peux pas faire ce que tu veux
directement.



pour info il suffit de mettre une balise meta "http-refresh"
duration= "3" et ca te recharge ta page, je suis pas sur du nom de ma
balise, je l'ai déjà dit sur le forum, fait une recherche, tu
trouveras.



pour tester on pourrait ralourdir le temps d'execution du main thread ainsi le second thread pourra se lancer plusieurs fois.



public othread as thread
public timer1 as new system.timers.timer()


sub page_load(sender as object,e as eventargs)
othread=new thread(addressof main)
othread.start()

dim d as decima

for i as decimal = 1 to 1000000

d += i.tostring

next

end sub



public sub main()
AddHandler timer1.elapsed,AddressOf Coucou
timer1.interval="500" ' on le redescend à 500ms
Timer1.Enabled="true"
timer1.start()
timer1.autoreset=false
end sub



Private i as integer = 0




public Sub Coucou(byval Sender as object,byval e as elapsedeventargs)
beep 'ça fonctionne

i += 1

label2.text = "essai N° " & i.tostring & "
" 'modification du texte ignorée

end sub





j'ai pas testé, mais si ca fonctionne, ca voudra dire
que l'on peut modifier, les propriétés à partir d'un thread séparé.
pour les modif du code, j'ai rien fait, juste rajouter un peu de
calculs, si ca suffit pas t'as qu'a rajouter un 0 derriere, et aussi
reduit les 3s en 500ms, c'est tout.



Tient moi au courant du résultat, car j'ai la flemme de lancer VS.net pour ca maintenant



Si t'as d'autres questions hésites pas, j'essaye de répondre, meme si j'ai moins le temps en ce moment


<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr<sp =""></sp>
0
Rejoignez-nous