BackGroundWorker et presse-papier

Résolu
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013 - 28 sept. 2011 à 22:22
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013 - 30 sept. 2011 à 13:48
Bonsoir

J'ai ajouté un backgroundworker dans mon programme de manière à effectuer une tâche en arrière plan (comme son nom l'indique).

Cependant, j'ai besoin de copier une image et la coller dans un richtextbox (ce que j'arrive aisément à faire dans une procédure normale), mais j'ai l'impression que le backgroundworker n'accepte pas l'usage du presse-papier...

J'essaye d'accéder au presse-papier de dette façon :

Clipboard.SetDataObject(MonImage)

Si vous avez une idée... Merci

6 réponses

djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
29 sept. 2011 à 12:59
Bon je crois que j'ai trouvé la réponse ici :
http://stackoverflow.com/questions/4685237/how-can-i-make-a-background-worker-thread-set-to-single-thread-apartment

Apparemment, on ne peut pas toucher au clipboard dans un thread créé grâce au BackGroundWorker. Il faut créer un Thread "normal" de manière à gérer le SetApartmentState() avant de lancer le thread...

Le meilleur moyen pour que je me mette vraiment à apprendre les threads... (J'avoue que le BackGroundWorker simplifiait beaucoup la tâche)

Merci à vous 2 pour vos réponses...
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
28 sept. 2011 à 23:36
Bonjour,

si, comme je le pense (je ne connais pas VB.Net) ton backgroundworker est dans un "thread" séparé, tu risques fort de tomber dans un cas exposé ICI PAR MSDN à la rubrique Exceptions, non ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
NHenry Messages postés 15030 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
29 sept. 2011 à 00:18
Bonjour,

Regardes du coté des CrossThread Operations :
http://www.codeproject.com/KB/recipes/AccessControlFromThread.aspx

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
29 sept. 2011 à 12:08
ucfoutu : je me suis demandé oui si c'était pas la deuxième erreur citée par msdn, mais après de nombreuses recherches, ça ne n'a mené à rien... Je ne comprends pas ce qu'ils veulent qu'ils veulent dire par "Add the STAThreadAttribute to your application's Main method."


NHenry je comprends à peu près ce qu'ils disent, mais je ne vois pas le rapport entre un objet d'un autre thread, et le ClipBoard...
D'ailleurs, j'arrive à accéder aux objets du Form contenant le BackGroundWorker sans problème...
Je ne suis pas encore bien calé niveau Threads...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
29 sept. 2011 à 15:18
Ah bon ?
On n'aurait pas cru !
C'est pourtant ce qu'en disait MSDN


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
30 sept. 2011 à 13:48
Oui, mais c'est pas très très clair pour quelqu'un qui débute au niveau des threads...

J'ai réglé le problème du presse-papier en créant un thread "manuellement", mais maintenant il me pose des problèmes d'accès aux fichiers...
C'est pas facile (comme le dit MSDN) ne créer un thread sans erreurs
0