PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Tâche parallèle ne rend pas la main
Tâche parallèle ne rend pas la main
Iniciado por Pierre, 24,feb. 2020 07:43 - 2 respuestas
Miembro registrado
185 mensajes
Publicado el 24,febrero 2020 - 07:43
Bonjour,

A l'ouverture de la fenêtre j’exécute le traitement ci-dessous :

SI gpclMesPhotos=Null ALORS
Trace(HeureVersChaîne(HeureSys()))
gpclMesPhotos = allouer un CPhotosLst(CPicture.Dossier,Dossier.D0CleUnik,Dossier.DossierNo,gclMesParamètres.m_stChemins.sPhotos,"")
gpclMesPhotos.Charger()
Trace("Photos chargées " + HeureVersChaîne(HeureSys()))
soit t2 est une TâcheParallèle=TâcheParallèleExécute(ImporterPhotosExistantes,(gpclMesPhotos))
Ajoute(gtabMesTaches,t2)
TâcheParallèleAttend(t2)
TâcheParallèleExécuteAprès(t2,Fini,("Importation"),tpoThreadPrincipal)
POUR TOUTE clUnePhoto,nCpt, Posi de gpclMesPhotos.m_tabItems
soit t=TâcheParallèleExécute(PhotoCharger,(clUnePhoto))
TâcheParallèleExécuteAprès(t,MajPhotoLst,(ValeurRenvoyéeTâchePrécédente,nCpt))//,tpoThreadPrincipal)
Ajoute(gtabMesTaches,t)


PROCEDURE INTERNE PhotoCharger(clMaPhoto)
clMaPhoto.JpgCharger()
RENVOYER clMaPhoto

FIN
PROCEDURE INTERNE MajPhotoLst(clMaPhoto, nPosi )
SectionCritiqueDébut(gpclMesPhotos.m_tabItems)
gpclMesPhotos.m_tabItems[nPosi]=clMaPhoto
SectionCritiqueFin(gpclMesPhotos.m_tabItems)

FIN
PROCEDURE INTERNE Fini(sInfo est une chaîne="")


Trace(sInfo+HeureVersChaîne(HeureSys()))
// ToastAffiche(sInfo+heuresys())
FIN
FIN

PROCEDURE INTERNE ImporterPhotosExistantes(clMesPhotosImportations est un CPhotosLst dynamique)
clMesPhotosImportations.ImporterDepuisDossier()
FIN
PROCEDURE INTERNE FinChargementPhotos()
ToastAffiche("Photos chargées")
FIN
FIN
TâcheParallèleExécuteAprèsToutes(gtabMesTaches,Fini,("Tout fini"), tpoThreadPrincipal)


Le traitement s'effectue correctement mais j'ai un sablier +- 5s et je ne récupère le focus que lorsque le traitement est effectué.

Je pensais que lorsqu'une tâche parallèle s'exécute l'utilisateur avait complètement la main sur l'interface.

Qu'ai-je fait de travers ?

Merci d'avance et bonne journée
Pierre
Miembro registrado
90 mensajes
Publicado el 24,febrero 2020 - 11:40
Bonjour

la ligne "TâcheParallèleAttend(t2)" y est sans doute pour quelque chose ;-)

puisque la fonction "TâcheParallèleAttend" attend la fin de l'exécution de la tache parallèle désignée
Miembro registrado
185 mensajes
Publicado el 25,febrero 2020 - 09:03
Bonjour,

Merci pour l'info. Ce n'est pas encore solutionné mais j'ai découvert que la procédure de t2 n'est pas adaptée pour cela. Comme elle doit absolument être terminée avent d'entamer le reste je vais revoir les enchainements à mettre en place.

Bonne journée
Pierre