Page 2 sur 2

Re: Problème avec RenameFile()

Publié : mar. 29/nov./2022 2:11
par case
tu indique que tu utilise des threads, n'est il pas possible que 2 threads tentent d’accéder au même fichier ?

Re: Problème avec RenameFile()

Publié : mar. 29/nov./2022 10:49
par MLD
Bonjour a tous
je serais a ta place ,je ferais un essais sans CloseHandle_(handle)
Je soupçonne un petit bémol dans l'arrière cuisine de windows, si tu visualise le handle d'un fichier et tu vire celui-ci et qu'ensuite t'appel ce même fichier.
Ce n'est qu'une hypothèse de ma part.

Re: Problème avec RenameFile()

Publié : mar. 29/nov./2022 13:51
par boddhi
Bonjour à tous,

@case
Non, je n'ai qu'un seul thread qui tourne ('fin je crois)
En gros, il tourne comme ça :
  • Lancement du thread
  • 1e boucle While (ExamineDirectory()/NextDirectoryEntry()) qui scanne un dossier, ou plusieurs en récursif, et qui sélectionne des fichiers selon des critères saisis par l'utilisateur et alimente une List
  • Opérations intermédiaires sur des variables, raffraîchissements de gadgets, etc... mais aucune en lien avec des commandes de fichiers
  • 2e boucle While qui renomme les fichiers
  • Arrêt du thread
Pourquoi 2 boucles au lieu d'1 (j'anticipe la question :D ) ?
1) Pour alimenter uniquement la List() en fichiers concernés par le renommage (Je travaille avec près d'une centaine de milliers de fichiers)
2) Pour connaître à l'avance le nombre de fichiers qui seront à traiter

Je lance le thread à l'extérieur de la procédure récursive, donc si j'ai bien compris le fonctionnement des threads, normalement, je n'en ai bien qu'un seul qui tourne !?

@MLD
boddhi a écrit :Néanmoins, au risque d'insister, dans mon code originel, je ne fais pas appel à cette API. J'y ai eu recours (=insérer dans mon code) que pour essayer de comprendre pourquoi l'instruction RenameFile() plante et c'est grâce à elle (même si au final elle est presque inutile) et surtout à GetLastError() que j'ai découvert que c'ést en raison de violations de partage. Comme je l'ai écrit, je ne suis pas un grand connaisseur des APIs et si je peux m'en passer, c'est tant mieux :D . Les utiliser n'est pas un réflexe systématique !

Code : Tout sélectionner

Résumé : 
;Pas d'API CreateFile_() ni CloseHandle_()
Debug GetLastError_() retourne 0
Debug RenameFile(FichierSource,FichierCible) retourne 0 => Echec
Debug GetLastError_() retourne 32 => Violation de partage

Re: [Irrésolu/Clos] Problème avec RenameFile()

Publié : mar. 06/déc./2022 13:04
par boddhi
Je n'ai pas réussi à résoudre le problème. J'ai donc retiré toute la partie faisant appel au thread pour revenir à une exécution séquentielle classique qui fonctionne parfaitement.

Fil pouvant être considéré comme clos.

Merci à tous pour votre aide et vos pistes.

Re: [Irrésolu/Clos] Problème avec RenameFile()

Publié : jeu. 08/déc./2022 19:57
par threedslider
un topic sur purept; ya peut être intéressant sur comment utiliser le thread sur ton problème, donc purept c'est un pathtracer, un rendu 3D quoi.

https://www.purebasic.fr/french/viewtop ... lit=purept

Bonne chance.

Happy coding !

Re: [Irrésolu/Clos] Problème avec RenameFile()

Publié : sam. 10/déc./2022 20:50
par boddhi
@threedslider
Merci, je vais regarder ça...