le timer windows forms est sur le thread principal, dans son event on peut donc modifier l'interface, sa précision ne peut faire mieux que 16ms
les 2 autres sont sur un thread séparé et beaucoup plus précis (1ms)
Version imprimable
le timer windows forms est sur le thread principal, dans son event on peut donc modifier l'interface, sa précision ne peut faire mieux que 16ms
les 2 autres sont sur un thread séparé et beaucoup plus précis (1ms)
d'accord merci pour l'explication
vu que j'ai pas besoin d'etre extrêmement precis je vais grader celui de la form
une derniere question est ce qu'avec cette methode un fichier peut etre traiter alors qu'il n'a pas fini d'etre ecrit ? parce qu'avec mon ancienne methode j'avais parfois se probleme
ca se peut, il faudrait faire un test en copiant un gros fichier de quelques Go pour voir si le filesystemwatcher lève l'event au moment où le fichier apparait ou à la fin de l'écriture auquel cas la méthode pour savoir si le fichier est fini d'écrire est :
dans un try catch ouvrir le fichier en mode d'écriture exclusif, si le fichier n'est pas fermé ca va dans le catch, si le fichier est fermé, ca continue et il faut alors le refermer (.dispose sur le filestream retourné par file.open)
J'ai fais le test et il traite le fichier alors qu'il n'est pas fini de copier
par contre je voit pas comment on peut lancer un fichier en ecriture exclusif
pourquoi tester si le fichier n'est pas fermer ? se n'est pas si il ne peut pas s'ouvrir ?Citation:
si le fichier n'est pas fermé ca va dans le catch,
et après si le fichier est fermé pourquoi le refermer.Citation:
si le fichier est fermé, ca continue et il faut alors le refermer
finalement je comprend pas vraiment ta solution.
c'est à toi d'adapter le code du catch pour savoir à la sortie du catch ce que tu dois faireCode:
1
2
3
4
5
6
7
8
9 Try System.IO.File.Open(f, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None).Dispose() ' file.open retourne un filestream permettant d'accéder au fichier ' je fais .Dispose dans la foulée pour le refermer car si je l'ai ouvert il faut bien que je le referme pour pouvoir le copier après :D ' si l'ouverture plante on va dans le catch, le dispose n'est pas appelé et n'a pas besoin de l'être d'ailleurs, une fois compilé ca correspond à plusieurs de lignes de code en fait, pas une seule Catch ex As Exception ' windows ne veut pas qu'on ouvre le fichier pour écrire dedans sans le partager, ca veut dire quelqu'un d'autre et en train d'écrire dedans End Try ' si on arrive ici sans passer dans le catch c'est que le fichier a bien voulu s'ouvrir donc personne n'écrit dedans il doit être fini d'écrire
c'est plus clair ?
oui merci c'est beaucoup plus clair
enfaite l'ouverture exculsif c'est " System.IO.FileShare.None " pour le partage du fichier.
je pense qu'avec sa je devrais m'en sortir je vais tester si ca fonctionne:mrgreen:
sa fonctionne parfaitement juste modifier 2-3 truc pour que sa corresponde avec se que je voulais faire :D
merci pour ton aide
je vais le laisser tourner jusqu'a vendredi sans y acceder pour voir si il ne se fige pas (mon probleme principale après tout :aie:)
si je ne rencontre pas d'autre soucie je mets le sujet comme resolu
en tout cas merci pour tout
après plus de 24h en attente l'appli a bien repris lorsque je lui es mis un fichier a traiter
merci beaucoup pour ton aide pol63 :ccool: