WPF : problème de thread et de dependency property

Signaler
Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018
-
Messages postés
11
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
23 mars 2010
-
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

Messages postés
11
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
23 mars 2010

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