Bonjour à tous,
Je fais face à un ptit soucis qui je pense a été traité déjà auparavant mais je ne trouve pas mon bonheur sur le web
J'utilise un backgroundworker pour charger une liste d'images que je colle ensuite dans des controles picturebox (pour l'exemple, car en fait je travaille en wpf, mais le probleme n'est pas situé à ce niveau).
Donc voici grosso modo le principe :
- j'ai 1 Sub qui charge tous les noms de fichiers images dans un arraylist puis appelle le dowork du backgroundworker en lui envoyant la liste en parametre.
- Dans le dowork, j'ai une boucle qui, pour chaque element de mon arraylist créé un objet (c'est une classe a moi, mais bon, en gros c'est une classe qui a une property pour le chemin de l'image et une autre property qui est l'objet bitmap lui meme).
A la fin de ma boucle, je me retrouve avec un objet de type List(Of MaClasseImage) que j'envoie dans le e.result
- Dans le workcompleted, je recupere la liste d'images via le e.result que je caste bien entendu en type List(Of MaClasseImage). avec ce resultat, j'envoie tout ca dans l'interface mais là ca crashe car il me dit qu'il ne peut acceder à un objet créé dans un autre thread.
Message d'erreur complet : Le thread appelant ne peut pas accéder à cet objet parce qu’un autre thread en est propriétaire.
Ma question est la suivante : comment faire pour transmettre l'objet d'un thread à un autre ?
Edit : petite précision : je me situe dans une classe donc je n'ai pas acces au dispatcher de la fenetrecomment faire autrement ?
Merci d'avance
@ bientot
Partager