Bonjour les potes !
Alors je tiens à prévenir que j'ai commencé le développement via les environnements PCSOFT l'année dernière, j'ai commencé en v23 et je viens de passer mon site en v24. Je développe un site qui manipule beaucoup de données, et chacune des pages de mon site retourne des données de la base après les avoir traitées ou non (peu importe)
Sur chacune des pages, pour optimiser le temps d'affichage des données, j'exécute tous les traitements (requêtes, procédures, ...) dans un threadSecondaire qui, au fur et à mesure de son exécution, modifie une variable globale à la page (implémentation à chaque fois qu'on a récupéré les informations d'un équipement par exemple). Et donc pour afficher l'avancement de la récupération des données j'ai un timer qui exécute toutes les secondes une fonction navigateur qui exécute le traitement au clic d'un bouton (qui utilise de l'AJAX) et qui permet d'afficher l'avancement si une recherche est en cours, et affiche les données si la recherche est terminée.
Depuis que je suis passé en 24 j'ai un problème très bizarre. La première recherche que je lance sur n'importe quelle page du site ne fonctionne pas. Mais une fois que cette recherche infructueuse est passé, toutes les autres fonctionnent....
En gros je lance ma recherche, je constate que ça ne fonctionne pas, et pour que ça marche il faut que je change de page, que je lance une recherche sur cette autre page, puis revienne sur la première page pour lancer la recherche et la ça fonctionnera.
Et en mode debug j'ai vérifié, le thread est bien exécuté c'est juste la modification des variables globales qui ne se fait pas...
Je sais qu'en version 23, il était déconseillé de modifier des variables ou des champs dans des threads secondaires et que cela pouvait avoir "des effets aléatoires", personnellement je ne m'étais jamais gêné et n'avais quasiment (j'avoue) jamais eu de souci.
Est ce que cette époque de rêve est révolue ? Vais-je devoir faire un paquet de procédure interne dans mes threads pour modifier ces champs/variables en utilisant la fonction ExecuteThreadPrincipal ? Pour au final perdre une belle partie du temps de traitement que j'avais optimisé au maximum ?
Mais est-ce réellement ici l'origine du problème ? Je ne pense pas vu que toutes les recherches fonctionnent après en avoir fait une pour du beurre ...
Ne serait-ce simplement comme je l'imagine (et l'espère) un problème de description de mon bouton ? De ma page ? De mon projet ?
Ou est-ce la méthodologie qui n'est plus bonne ? Le timer qui appelle le bouton ? Je ne sais pas
A l'aide mes valeureux compagnons. Bonheur, santé et gratitude à vous et vos proches. |