begin process at 2012 02 10 08:19:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Multimédia

 > 

WPF

 > 

Slider et multithreading


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Slider et multithreading

vendredi 17 octobre 2008 à 17:16:10 | Slider et multithreading

herve_labenere

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 HandlerThreadMorceau(Slider sl, Audio au, double nouvellePosition)
      {
           monAu = au;
         monSlider = sl;
          maNouvellePosition =   nouvellePosition;         
      }

      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.

Herwin
dimanche 19 octobre 2008 à 16:40:28 | Re : Slider et multithreading
lundi 27 octobre 2008 à 15:25:16 | Re : Slider et multithreading

herve_labenere

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.


private delegate void AppelMethodeDelegate();
       
        private void btnLecture_Click(object sender, RoutedEventArgs e)
        {
          
       CtrLecture._lire();
       AppelMethodeDelegate appel = new AppelMethodeDelegate(_derouler);
       sliderMorceau.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, appel);       
}


        private void _derouler()
        {
           sliderMorceau.Value = CtrLecture.Lecteur.CurrentPosition;       
}






Herwin


Cette discussion est classée dans : thread, slider, sl, derouler, handlerthreadmorceau


Répondre à ce message

Sujets en rapport avec ce message

thread [ par bouleetbil ] Je cree un chat avec des sockets donc j'ai un thread qui tourne en fond de tache et qui recupere les messages. A partir de ce thread je peux recevoir multi thread [ par matt2 ] salut j'aurai besoin d'un renseignement!!!!j'ai créé un prog en multi thread. Chacun des deux thread fait appel à une file que j'ai déclaré dans ma cl Changement de langue d'un ColorDialog C# [ par Did69 ] Hello all,Voila mon probleme, lorsqu'on ouvre un ColorDialog, il utilise la langue de windows, en gros si windows est en francais tous les boutons son Changement de langue d'un ColorDialog C# [ par Did69 ] Hello all,Voila mon probleme, lorsqu'on ouvre un ColorDialog, il utilise la langue de windows, en gros si windows est en francais tous les boutons son Ajout d'un contrôle depuis un thread en utilisant Invoke... [ par gazous ] Bonjour,Je vous contacte car j'ai vu que vous étiez assez calé en dll.Mon problème :J'ai un thread qui essaye d'ajouter un contrôle dans un panel char Problème de thread, socket et form [ par Florynth ] Bon pas très compliqué,j'ai créé un thread qui écoute un portaprès je pèse sur un bouton qui fait connectédonc il créé un socket le connect au port en Pb d'affichage de fenetre et thread... [ par bigflo ] Salut,Je developpe un client de tchat en c#.Mais j'ai quelque pb d'affichage des fenetres de tchat. Explication:Bon, j'ai une treeview et lorsque je d thread en C# [ par karshnod ] Bonjour, je me permet de poster car je suis sur un probleme que je ne comprend pas J'ai une WinForm, qui detecte la navigation sur Ie. J'ai un thread Thread + NetworkStream [ par JuS ] Je vais vous exposer mon problème (c'est un peu long à lire et à comprendre...)Je programme un programme client/serveur.Le client, en C#, communique a [C#] Visual 2003 -> Visual 2005 [ par scoubidou944 ] Je suis en train de testerl a version 2005 de Visual .NET Whidbey.Alors, premier prog à lancer et ca plante :( dans mon splash screen.En gros j'ai un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,560 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales