|
| 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)) 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())) 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 |
| |
| |
| | | |
|
| | | | |
| | |
|