Recommendez-vous l'utilisation d'un thread pour envoyer un gros fichier vers un site via FTP ? (aujourd'hui bloqage la fenêtre principale : pas de réponse pendant le transfert).
Le thread peut-il mettre à jour la progressbar d'upload placé sur la fenêtre principale ?
J'aimerai que le programme sache lorsque l'upload est terminé. Et le signale à l'ordinateur
Auriez-vous un exemple ? (surtout pour la structure le code).
Merci.
(Ci dessous extrait de mon code actuel sans thread : FTP_Gerer() appelée dans la boucle principale du programme ).
Code : Tout sélectionner
Procedure FTP_ouvrir()
gParametres\FTP = OpenFTP(#PB_Any,gParametres\NomServeurFTP, gParametres\NomUtilisateurFTP, gParametres\MotDePasseFTP, gParametres\PortFTP)
If gParametres\FTP = 0
MessageRequester ("Erreur","Impossible de se connecter au site pour transfert !")
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Procedure FTP_transferer_fichier()
Protected Choix
Protected NomFichierSite$
Protected CheminFichier$
NomFichierSite$ = GetFilePart (gParametres\CheminFichierFTP$)
CheminFichier$ = gParametres\CheminFichierFTP$
SetGadgetText (Text_fichier_transfere, "...")
If FTP_verifier_fichier_existe(GetFilePart (CheminFichier$)) = #True
Choix = MessageRequester ("Avertissement", "Le fichier '" + GetFilePart (CheminFichier$) + "' existe déjà sur le serveur du site, souhaitez-vous définitivement le remplacer ?", #PB_MessageRequester_YesNo | #PB_MessageRequester_Warning)
If Choix = #PB_MessageRequester_No
MessageRequester ("Info","Transfert annulée.", #PB_MessageRequester_Info)
ProcedureReturn #False
EndIf
EndIf
If FTP_ouvrir() = #True
If IsFTP (gPArametres\FTP) <> 0
If CheminFichier$ <> ""
If FileSize (CheminFichier$) <> - 1
gParametres\MaxProgress = FileSize(CheminFichier$)
gParametres\REsultat = SendFTPFile(gParametres\FTP,CheminFichier$,#CHEMIN_SITE + NomFichierSite$,#True)
gParametres\Uploade = 1
Else
MessageRequester ("Erreur","Le fichier à transférer n'a pas été trouvé !", #PB_MessageRequester_Error)
EndIf
Else
MessageRequester ("Erreur","Vous devez choisir un fichier sonore auparavant !", #PB_MessageRequester_Error)
EndIf
EndIf
EndIf
EndProcedure
Procedure FTP_gerer()
If IsFTP (gPArametres\FTP) <> 0
If gParametres\Uploade = #True
If FTPProgress(gParametres\FTP) = #PB_FTP_Finished
SetGadgetState(ProgressBar_transfert_fichier_site,100)
Afficher_message ("Fichier transféré.")
SetGadgetText (Text_fichier_transfere, GetFilePart(gParametres\CheminFichierFTP$) + " (" + Donner_taille_fichier (gParametres\CheminFichierFTP$) + ")")
gParametres\Uploade = #False
FTP_fermer()
FTP_lister_fichiers_site()
Else
SetGadgetState(ProgressBar_transfert_fichier_site,FTPProgress(gParametres\FTP))
If FTPProgress(gParametres\FTP) = #PB_FTP_Error
Afficher_message ("Erreur lors de la transmission du fichier !")
MessageRequester ("Erreur", "Erreur lors de la transmission du fichier !", #PB_MessageRequester_Error)
AbortFTPFile(gPArametres\FTP)
gParametres\Uploade = #False
FTP_Fermer()
EndIf
EndIf
EndIf
EndIf
EndProcedure