-
Excel et multithreading
Bonjour,
Je travaille sur une application devant récupérer des données dans Excel pour les transférées dans un autre programme. Tout fonctionne très bien, seulement lorsque j'envois le transfert des données, mon interface se fige, dût au travail de récupération des éléments dans Excel et de copie de ceux-ci dans mon programme.
Ce vilain comportement peut-il être éviter autrement qu'en multithreading ? J'ai pu mettre en place rapidement un petit thread exécutant ma fonction de transfert, ce qui rend mon interface très fluide (il faut juste que je bloque l'accès au bouton de transfert jusqu'à ce que le thread aie fini) mais je n'arrive pas à mettre à jour mon label indiquant la progression de mon transfert. Puisqu'il appartient à mon thread principal, je ne peux y accéder depuis mon second thread.
Comment faire ?
Merci d'avance.
-
en restant sur le thread principal c'est faisable avec l'instruction doevents dans ta boucle, ca dégèle l'interface à chaque tour mais ca ralenti le traitement
sinon il y a le backgroundworker qui te pemettra de modifier ton label car il a 2 évènements qui sont ramenés sur le thread principal
et il reste possible d'écrire un délégué pour qu'un thread puisse modifier un controle, ce mécanisme est souvent décrit, je l'ai décris plusieurs en fois en détail
-
-
Merci beaucoup pour vos réponses. Finalement, pour me faciliter la vie j'ai suivis le conseil de sperot51 en travaillant avec un Backgroundworker et j'ai regardé le tuto de developpez.net sur le sujet. Excellent.
Tout fonctionne plutôt bien de cette manière, merci encore !