|
Mettre à jour un champ régulièrement depuis un Thread |
Iniciado por Alexandre LAVIGNE, 23,ene. 2020 11:25 - 4 respuestas |
| |
| | | |
|
| |
Miembro registrado 22 mensajes |
|
Publicado el 23,enero 2020 - 11:25 |
Bonjour,
J'aimerai mettre en place un système qui actualise ma page régulièrement toute les secondes. Pour cela, j'ai essayé d'utiliser des thread, seulement le problème auquel je suis confronté est qu'un thread secondaire ne peut mettre à jour un champ, et si j'essaye de faire cela depuis le thread principal, le Multitâche(100) bloque mon site indéfiniment.
Voici mon code actuellement : Dans le code d'initialisation :
ThreadExecute("tempo",threadNormal,timer_actualisation)
La fonction timer_actualisation :
TANTQUE Vrai Multitâche(100) LIB_TEST = DateHeureSys() FIN
Mais ça ne marche pas, le champ ne s'update pas.
==> Est-ce que ce que je cherche à faire est faisable ? ==> Si oui, comment ?
Merci d'avance pour vos réponses ! |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 22 mensajes |
|
Publicado el 23,enero 2020 - 11:51 |
J'ai finalement trouvé une solution à mon problème. Finalement, pas besoin de thread
Dans le code navigateur de chargement de ma page j'appelle :
Timer(timer_actualisation,100)
Ma fonction timer_actualisation appelle un AJAXExécuteAsynchrone
Procedure timer_actualisation() AJAXExécuteAsynchrone(maj_page(),actualise_Page)
Ma procédure serveur maj_page :
Procedure maj_page() RENVOYER DateVersChaîne(DateHeureSys())
Et la procédure navigateur actualise_Page qui met à jour mon champ :
Procedure actualise_Page(param est une chaîne) LIB_TEST = param
C'est probablement très sale mais au moins ça produit l'effet recherché. Si quelqu'un a une solution alternative, avec des threads par exemple, ça m'intéresse. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.304 mensajes Popularité : +47 (51 votes) |
|
Publicado el 23,enero 2020 - 12:09 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 324 mensajes Popularité : +21 (51 votes) |
|
Publicado el 23,enero 2020 - 12:24 |
Ouais sinon un simple timer navigateur qui appel du javascript
var date = new Date(); var str = date.getHours(); str += ':'+(date.getMinutes()<10?'0':'')+date.getMinutes(); str += ':'+(date.getSeconds()<10?'0':'')+date.getSeconds();
(bien sûr c'est juste la partie qui récupère la date heure, je vous laisse faire le reste du code)
Et tout se fait au niveau du navigateur pour le coup, aucun appel, server, pas d'ajax qui tourne en parralèlle.
Après j'ai envie de dire ca va pomper des ressources pour pas grand chose, afficher la date heure en temps réel sur un site est elle vraiment pertinante ? dans la mesure ou sous windows / mac , linux, android ou IOS, l'heure est visible en permanance dans le fond Mensaje modificado, 23,enero 2020 - 12:25 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 324 mensajes Popularité : +21 (51 votes) |
|
Publicado el 23,enero 2020 - 12:30 |
TANTQUE Vrai Multitâche(100) LIB_TEST = DateHeureSys() FIN
Ah oui et pour celà y'a plusieurs erreurs expliquant pourquoi ca ne fonctionne pas :
- Vous avez mis dans un thread un timer, or un timer est déjà un truc qui tourne en parallèle donc pas besoin de cela ici - Ensuite le timer, quand il met moins de temps à s'exécuter que son temps de répétition, bien entendu il va attendre le multitache ne sert à rien - Ensuite quand vous rentrer dans la boucle avec le tantque, y'a aucun point de sorti, la boucle ici n'est pas utilise puisque c'est le timer en lui même qui boucle - Enfin vous avez un timer qui tourne toute les secondes, et dès que vous rentrez dans la boucle, vous forcez une pause d'une seconde. Donc jamais le code ne s'exécute, j'en veux pour preuvre que si il s'executait correctement, il provequerait un crash du site puisque chaque seconde il lancerait un nouveau thread, qui lancerai un nouveau timer, qui bouclerai sans fin et après quelques minutes au revoir la ram et les lenteurs dans le navigateur aussi qui aurait trop de tâches à gérer ! |
| |
| |
| | | |
|
| | | | |
| | |
|