Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fin d'un processus

4 réponses
Avatar
Jacques \(BE\)
Bonjour,

Je lance une fonction qui copie des fichiers d'un répertoire vers un autre.
Ensuite j'efface le répertoire d'origine.
Lors de l'effacement du répertoire, je reçois un message d'erreur me disant
que le fichier x n'a pu être effacer car il est uitliser par un autre
processus (le précédent c'est à dire celui qui copie les fichiers).

Comment savoir que le processus de copie est terminé avant de lancer la
procédure d'effacement du répertoire et des fichiers ??

Merci de vos réponses

Jacques

4 réponses

Avatar
Patrick Philippot
Bonjour,

Je lance une fonction qui copie des fichiers d'un répertoire vers un
autre.
...
Comment savoir que le processus de copie est terminé avant de lancer
la procédure d'effacement du répertoire et des fichiers ??



C'est une fonction ou un processus? Pouvez vous nous montrer comment
vous lancer le processus de copie?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Jacques \(BE\)
Bonjour,

Voici :
Private Sub EnvoiJournaux()

Dim dirInfo As New System.IO.DirectoryInfo(RepertoireDestination)

Dim tfile As System.IO.FileInfo

Dim files() As System.IO.FileInfo = dirInfo.GetFiles("*.zip")

Dim CheminFichier As String

If (files IsNot Nothing) Then

For Each tfile In files

'envoyer les fichiers .zip

CheminFichier = RepertoireDestination & tfile.Name

My.Computer.Network.UploadFile(CheminFichier, "file://100.100.100.100/JA/" &
tfile.Name, "jacques", "toto")


Next

End If

Donc ma question est de savoir si le transfert du fichier est terminé"

Merci

"Patrick Philippot" a écrit dans le
message de news:
Bonjour,

> Je lance une fonction qui copie des fichiers d'un répertoire vers un
> autre.
> ...
> Comment savoir que le processus de copie est terminé avant de lancer
> la procédure d'effacement du répertoire et des fichiers ??

C'est une fonction ou un processus? Pouvez vous nous montrer comment
vous lancer le processus de copie?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




Avatar
Patrick Philippot
Bonsoir,

My.Computer.Network.UploadFile(CheminFichier,
"file://100.100.100.100/JA/" & tfile.Name, "jacques", "toto")
Donc ma question est de savoir si le transfert du fichier est terminé"



Ah, il ne s'agit donc ni d'une véritable copie, ni d'un processus séparé
:-) .

Sauf erreur de ma part, UploadFile travaille sur un thread séparé mais
c'est néanmoins une opération synchrone vu de l'appelant. Quand
UploadFile retourne, le transfert est terminé et le fichier est
normalement clos. Donc, vous ne devriez pas avoir de problème. Par
contre s'il y a eu un accident en cours de route, une exception a été
déclenchée. Votre code ne semble pas utiliser un bloc Try / Catch
encadrant l'appel à UploadFile, ce qui serait plus prudent. S'il y a un
problème (timeout par exemple), vous ne serez pas informé. C'est
peut-être la raison pour laquelle le fichier n'est pas fermé et que la
suppression est impossible

Question: pourquoi vous compliquer la vie avec UploadFile quand une
simple copie (My.Computer.FileSystem.CopyFile) suffirait? Même si la
cible est un répertoire réseau, il suffit d'utiliser un nom au format
UNC (serveurdossier...) et tout ira bien.

Il y a une raison majeure qui vous a amené à utiliser UploadFile qui est
plutôt réservé aux transferts FTP ou HTTP? Est-ce parce que
l'utilisateur n'a pas les permissions adéquates sur le dossier cible?

Cordialement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Jacques
Bonjour,

Merci pour toutes ces bonnes inofrmations. On en apprends tous les jours,
c'est plaisant :-) J'ai utilisé UploadFile parce que je ne connaissais pas
l'autre possibilité ...! Mais effectivement, il y a un problème de login
avec mot de passe.
Les fichiers sont sur un portable et doivent être copiés sur notre serveur
web. Il devrait y avoir entre 50 et 60 portables en circulation ...!
Sans trop connaitre cette partie, je sais que l'on va utiliser le VPN et par
conséquent les données seront protègées. J'imagine aussi que l'on peut
configurer le serveur pour qu'il accepte ce qui vient par le VPN. Mais ça
c'est une autre histoire :-)

Je prefère me concentrer sur mon problème de copie de fichier.

Merci pour ces informations.

Jacques



"Patrick Philippot" a écrit dans le
message de news: #0l$
Bonsoir,

> My.Computer.Network.UploadFile(CheminFichier,
> "file://100.100.100.100/JA/" & tfile.Name, "jacques", "toto")
> Donc ma question est de savoir si le transfert du fichier est terminé"

Ah, il ne s'agit donc ni d'une véritable copie, ni d'un processus séparé
:-) .

Sauf erreur de ma part, UploadFile travaille sur un thread séparé mais
c'est néanmoins une opération synchrone vu de l'appelant. Quand
UploadFile retourne, le transfert est terminé et le fichier est
normalement clos. Donc, vous ne devriez pas avoir de problème. Par
contre s'il y a eu un accident en cours de route, une exception a été
déclenchée. Votre code ne semble pas utiliser un bloc Try / Catch
encadrant l'appel à UploadFile, ce qui serait plus prudent. S'il y a un
problème (timeout par exemple), vous ne serez pas informé. C'est
peut-être la raison pour laquelle le fichier n'est pas fermé et que la
suppression est impossible

Question: pourquoi vous compliquer la vie avec UploadFile quand une
simple copie (My.Computer.FileSystem.CopyFile) suffirait? Même si la
cible est un répertoire réseau, il suffit d'utiliser un nom au format
UNC (serveurdossier...) et tout ira bien.

Il y a une raison majeure qui vous a amené à utiliser UploadFile qui est
plutôt réservé aux transferts FTP ou HTTP? Est-ce parce que
l'utilisateur n'a pas les permissions adéquates sur le dossier cible?

Cordialement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr