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