WPF : problème de thread et de dependency property

cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 5 oct. 2009 à 17:19
Jmix90 Messages postés 11 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 23 mars 2010 - 1 mars 2010 à 00:04
Bonjour.

Dans le cadre d'un développement, j'ai créé un petit éditeur d'animation.
Le fonctionnement est simple : une classe animation qui contient les frames et la durée de chacune d'entre elle, et une classe player.

Cette dernière incorpore pas mal de dependency property (notamment sur la frame actuelle, le temps écoulé, le temps total de l'animation).

La "lecture" de l'animation se fait grace a une animation et un storyboard, qui fait varier une dependency property de 0 a la valeur contenue dans celle contenant le temps total, et faisant varier au passage les informations de frame.

L'éditeur marche bien, il ne comporte pas de bug (connus).

Le soucis, c'est que j'ai voulu intégrer ceci dans un petit jeu, et là je reçois assez souvent une erreur de type invalidOperation, qui me dit en gros que je ne peux modifier telle propriété car l'opération ne se déroule pas dans le thread qui l'a créé ...

Le plus étonnant, c'est que dans certaines circonstances, le morceau de code fautif ne renvoie aucune erreur !

Je sais que dis comme cela, ça risque de ne pas beaucoup vous éclairer, mais peut être avez vous déjà eu ce type de problèmes avec des dependecy et que vous avez une idée d'où cela peut venir ...

En espérant que quelqu'un pourra me dépanner,

Cordialement,

KiTe.


Ce qui nous tue pas nous rend plus fort,
Mais ce qui nous tue nous rend plus mort.

1 réponse

Jmix90 Messages postés 11 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 23 mars 2010
1 mars 2010 à 00:04
Hello,

Lorsque tu utilises des DependencyProperty c'est dans un DependencyObject et celui ci ne peut être accéder que depuis le Thread qui l'a créé.

Quelques questions :
[list]
[*] Tes objets sont créés sur quel Thread ?
[*] Sont-ils utilisés sur un autre Thread (via un BackgroundWorker par exemple) ?
/list


Jmix 90
http://blog.lexique-du-net.com
0
Rejoignez-nous