|
Problème de transfert FTP avec thread |
Débuté par JP chane, 07 oct. 2021 09:37 - 4 réponses |
| |
| | | |
|
| |
Membre enregistré 19 messages Popularité : +1 (1 vote) |
|
Posté le 07 octobre 2021 - 09:37 |
Bonjour à tous,
Je rencontre un problème avec une partie de mon application. Lorsque je procède à un transfert FTP de fichiers (en général de l'ordre de qq 10aines de Mo, en wifi par hotspot 4G dans la plupart des cas), en passant par un thread pour mettre à jour ma fenêtre, il arrive que l'exécution de mon code stoppe lors du prochain appel de thread, je suspecte en cas de perte de paquet. Ci-dessous la partie du code concernée.
ThreadExecute("Thread1", threadNormal, MAJ_Complete)
idConnexion = FTPConnecte(gclParamTP.m_sAddrFTP, gclParamTP.m_sLogFTP, gclParamTP.m_sPassFTP, gclParamTP.m_sPortFTP, Vrai, 300)
SI FTPFichierExiste(idConnexion, MonFichierSourceZip) ALORS ... ... ... ... ... ... ... ... ... ... ... ... ... SINON ... FIN
Procedure Jauge_Transfert(nTotal, nCourant) JAUGE_Progression_DL.BorneMin = 0 JAUGE_Progression_DL.BorneMax = nTotal JAUGE_Progression_DL.Valeur = nCourant CalcPourcent est un numérique CalcPourcent = nCourant * 100 CalcPourcent = CalcPourcent / nTotal LIB_Pourcent = NumériqueVersChaîne(Arrondi(CalcPourcent)) + " %" MultitâcheRepeint() RENVOYER Vrai
Avez-vous déjà rencontré ce problème, ou auriez-vous des idées de pistes me permettant d'identifier et corriger ce problème ?
À dispo si plus de question sur mon code, D'avance merci et bonne journée, |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 345 messages Popularité : +93 (137 votes) |
|
Posté le 07 octobre 2021 - 12:59 |
Il faut éviter les thread quand on utilise une fenêtre sur mobile Ici tu utilise une jauge Pour vérifier cela met en commentaire les ExécuteThreadPrincipal(Jauge Et réessaye |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages Popularité : +1 (1 vote) |
|
Posté le 07 octobre 2021 - 16:20 |
Popoy a écrit :
Il faut éviter les thread quand on utilise une fenêtre sur mobile Ici tu utilise une jauge Pour vérifier cela met en commentaire les ExécuteThreadPrincipal(Jauge Et réessaye
J'ai déjà fait ce test, et en effet le problème se déplace alors au prochain appel de thread, que j'utilises pour mettre à jour des libellés sur ma fenêtre dynamiquement Est-ce qu'il y a un test qui peut être fait ou une parade pour ne pas se retrouver bloquer ? J'avoue avoir en plus du mal à identifier la source du problème |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 345 messages Popularité : +93 (137 votes) |
|
Posté le 07 octobre 2021 - 19:35 |
JP chane a écrit :
J'ai déjà fait ce test, et en effet le problème se déplace alors au prochain appel de thread, que j'utilises pour mettre à jour des libellés sur ma fenêtre dynamiquement Est-ce qu'il y a un test qui peut être fait ou une parade pour ne pas se retrouver bloquer ? J'avoue avoir en plus du mal à identifier la source du problème Toutes les mises à jour d'ihm, c'est pareil, pas de thread. En plus, sur mobile l'asynchrone est a privilégier. Avec callback, etc Personnellement, pour ce genre de choses Je fais comme pour nation qui fonctionne sur la prochaine fenêtre ouverte J'ai créé une fenêtre principale avec des boutons non visible L'utilisateur crois que c'est un screenshots Et je fais des exécuté traitement des boutons Cela mets à jour les fenêtres Il faut aussi penser aux indirections J'évite les tread au maximum Je sais que cela complique ceux qui aiment les classes et les objets Mais c'est comme ça avec wm et les mobiles |
| |
| |
| | | |
|
| | |
| |
Posté le 07 octobre 2021 - 21:45 |
ca fait des années que j'utilise des threads en mobile avec des fenêtres sans aucun problème...
-LA- règle à suivre, c'est AUCUN ACCES à l'interface utilisateur, ni aux champs, ni avec des infos ou des ouinon ou des trace ou quoi que ce soit de ce genre...
Et si jamais tu utilise autre chose que des variables globales, il faut aussi le faire dans des sections critiques
La, dans le code du thread secondaire, si tu as un problème, tu essaye de faire un ouinon, et ca te plante, c'est tout... Ce genre de pratique est COMPLETEMENT INTERDITE |
| |
| |
| | | |
|
| | | | |
| | |
|