PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Accès concurrentiel avec un timer ?
Accès concurrentiel avec un timer ?
Iniciado por obtuli, 20,ene. 2020 15:51 - 3 respuestas
Miembro registrado
961 mensajes
Publicado el 20,enero 2020 - 15:51
Bonjour,

Une procédure associée à un Timer peut-elle être en concurrence sur une ressource par rapport à des traitements ?
comme l'écriture dans un champs de saisie d'une fenêtre ?

Deux Timers (deux procédures) écrivent dans le même champs de saisie de la fenêtre pour faire de la supervision .

Merci

OB
Miembro registrado
961 mensajes
Publicado el 20,enero 2020 - 16:09
Bonjour,

J'ai oublié une information importante informations, il y a aussi un sEvénement, c'est un callback quand le scanner lit un qr code.
Il écrit dans le même champ de saisie pour indiquer d'une lecture de code a eue lieu et affiche le texte lu.

ça fait beaucoup de monde.

Le logiciel plante régulièrement, une à deux fois par semaine (ce qui en bloque le fonctionnement), il y a aussi des threads.
j'essaie de déterminer l'endroit, sur quelle ressource et quelle "boucle" fait planter le programme (message log Windows indique un problème
d’accès refusé à une ressource)

merci

OB
Miembro registrado
1.002 mensajes
Publicado el 20,enero 2020 - 16:33
Bonjour,

Oui, c'est possible et même dangereux,

Il faut mettre en place des sections critiques ou semaphore

https://doc.pcsoft.fr/fr-FR/?1000021292
https://doc.pcsoft.fr/fr-FR/?3077013&name=gerer_les_semaphores_dans_les_threads_limiter_execution_simultanee_code

Jordan
Miembro registrado
961 mensajes
Publicado el 20,enero 2020 - 18:26
Jordan,

Merci pour ta réponse, j'avais bien regardé tout ça, j'ai essayé de m'en passer, à mesure que le programme est devenu complexe les problèmes sont arrivés, je dois revoir l'ensemble.

Mes threads écrivent dans la fenêtre pour savoir où en en est le traitement à chaque étape, ce qui est très déconseillé, je vais y remédier.

Sinon le fonctionnement de mes thread est base sur un variable qui indique que le thread à fini pour continuer.

j'utilise des threadExecute pour lancer mes threads

gb_th_encours = Vrai
run_fontion(1) // ------> qui lance le thread,quand le thread a fini il passe gb_th_encours à faux

TANTQUE gb_th_encours = Vrai
//attendre ....
FIN


Cordialement

Didier