PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Premier thread secondaire de mon application ne marche pas ... Seulement le premier  :B
Premier thread secondaire de mon application ne marche pas ... Seulement le premier :B
Débuté par Développeur de Feu, 13 aoû. 2019 14:31 - 3 réponses
Membre enregistré
48 messages
Popularité : +0 (2 votes)
Posté le 13 août 2019 - 14:31
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.
Membre enregistré
48 messages
Popularité : +0 (2 votes)
Posté le 14 août 2019 - 09:37
UPDATE !!

En fait le code du bouton n'est non plus jamais exécuté ...
Je vous tiens au jus le sang d'la veine
Membre enregistré
48 messages
Popularité : +0 (2 votes)
Posté le 16 août 2019 - 10:38
UPDATE

J'ai corrigé mon problème d'une manière assez simple, dans mon thread : au lieu de faire les ZRAjouteLigne directement, je stocke les données dans un tableau (variable globale à la page) puis dans le code du bouton exécuté par mon Timer, je fais ZRAjouteLigne pour chaque occurrence de mon tableau.

Voili voilou
Membre enregistré
48 messages
Popularité : +0 (2 votes)
Posté le 19 août 2019 - 11:01
UPDATE

En fait, j'ai pu d'erreur, ça fonctionne effectivement bien, mais j'ai une perte de performances qui est énorme, cela a doublé le temps d'affichage de mes données

N'y a-t-il a pas un moyen de désactiver cet autodiagnostic de threads ?...