herve_labenere
Messages postés23Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention27 octobre 2008
-
17 oct. 2008 à 17:16
herve_labenere
Messages postés23Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention27 octobre 2008
-
27 oct. 2008 à 15:25
Bonsoir,
Je souhaite binder un control Slider avec la lecture d'un morceau MP3, en WPF.
Mais ça ne semble pas fonctionner pas de manière déclarative.
Alors je passe par du code et en particulier du multithreading.
Le thread principal contient le code qui lit le morceau.
La méthode _lire appelle la methode _derouler(Slider sl)
Cette méthode instancie un thread, qui lance la méthode _derouler de la classe HandlerThreadMorceau
Je suis apparemment obligé de passer par une classe comme HandlerThreadMorceau, pour passer en paramètre au nouveau thread la position courante du morceau. On ne peut en effet directement faire new Thread(new ThreadStart(methode(param))
_derouler(Slider sl)
{
Thread myThread;
HandlerThreadMorceau = new HandlerThreadMorceau(Slider sl, this, Lecteur.CurrentPosition);
myThread = new Thread(new ThreadStart(HandlerThreadMorceau._derouler);
myThread.Start();
}
public class HandlerThreadMorceau
{
private double maNouvellePosition;
private Slider monSlider;
private Audio monAu;
public void _derouler()
{
monSlider.Value = maNouvellePositio
}
}
Et c'est là que ça coince. monSlider.Value = maNouvellePosition déclenche l'erreur suivante : "on ne peut attribuer une valeur à monSlider.Value car il appartient à un thread différent".
Comment faire donc pour réctifier ce code, afin que mon slider suive la progression du morceau de musique.
herve_labenere
Messages postés23Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention27 octobre 2008 27 oct. 2008 à 15:25
Merci pour ces précisions.
Mais je ne suis pas en Winforms mais en WPF. Et Control.Invoke n'existe pas.
Je passe donc par Control.Dispatcher.
Mais le threading n'étant pas ma tasse de thé, je n'arrive pas à finaliser mon code : Le slider reste immobile, tandis que le morceau de musique est lu.