Moi aussi. Je trouve l'utilisation d'un timer inapproprié. C'est pour cette raison que j'ai demandé votre aide. Tu m'as convaincu, je vais étudier la question de la TThreadList.Envoyé par Eric Boisvert
Simplement, il faut que vous sachiez que je ne termine pas les threads, je les suspend parce que la création d'un thread crée aussi l'objet Http et que les requêtes Http sont nécessaires pendant toute l'exécution du programme (d'autres fonctions que la copie peuvent être demandées). L'evénement de fin de requête met en pause le thread jusqu'à qu'une nouvelle requête le redémarre. Par exemple, si l'application n'utilise que 2 threads, seulement 2 threads seront créés et si elle utilise les 10, les 10 seront créés et détruis à la fermeture du programme via FreeOnTerminate := True;
Ça peut vous sembler bizarre, mais je n'ai pas vraiment besoin de détruire l'objet thread et son objet Http pour devoir le recréer...Cela consomme un peu plus de mémoire, certe, mais en contre partie, je gagne du temps en évitant la destruction et recréation de l'objet. C'est peut-être aussi l'avantage d'utiliser une TThreadList : On ne détruit pas le thread jusqu'à qu'on en ait plus besoin, non?
Mais dans tous les cas, nous sommes bien d'accord sur un point : Ce sera le thread principal qui se chargera de distribuer les fichiers de la liste aux threads de copie libres. TThreadList me semble être une solution très intérressante et performante, mais puis-je l'utiliser sachant que je ne détruis pas les threads ? Le sémaphore ne serait-il pas un choix plus judicieux ?
Partager