Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Timer Lecteur audio

Sujet résolu
22 mars 2012 à 23:02:39

Bonsoir,

Je suis un peu perdu dans mon code. J'ai une class MaFenetrePrincipale qui gère les Forms est possède une instance de Lecteur. J'ai une autre class appelé Lecteur qui gère la lecture grâce la librairie Microsoft.DirectX.AudioVideoPlayback.

J'aimerai créer un Timer qui démarre en même temps que ma music afin de mettre a jour un TrackerBar.
Le problème c'est que le trackerBar ne se met pas à jour et créé une exception opération inter-thread non valide.

MaFenetrePrincipale
namespace lecteur
{
    public partial class MaFenetrePrincipale : Form
    {
        private Lecteur lecteur = null;

        public MaFenetrePrincipale()
        {
            InitializeComponent();
        }

        private void ouvrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Console.WriteLine("Open Dialog");

            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "mp3 files (*.mp3)|*.mp3|All files (*.*)|*.*";

            if (open.ShowDialog() == DialogResult.OK)
            {
                if ((open.OpenFile()) != null)
                {
                    Console.WriteLine(open.FileName);
                    lecteur = new Lecteur(open.FileName);
                    lecteur.temps.Elapsed += duree_Elapsed;
                    lecteur.Play();
                    trackBar1.Maximum = Convert.ToInt32(lecteur.Duration());
                    Console.WriteLine("temps max : " + trackBar1.Maximum);
                }
            }
        }

        private void duree_Elapsed(object sender, ElapsedEventArgs e)
        {
            Console.WriteLine("seconde : ");
            trackBar1.Value += 1;
        }
    }
}

namespace lecteur
{
    class Lecteur
    {
        private Audio lecteur = null;

        public Timer temps
        {
            get;
            set;
        }

        public Double Position
        {
            get { return lecteur.CurrentPosition; }
            set { lecteur.CurrentPosition = Position; }
        }

        public Lecteur(String fichier)
        {
            Console.WriteLine("Play : " + fichier);
            lecteur = new Audio(fichier);
            temps = new Timer(1000);
            temps.Enabled = true;
            temps.Start();
        }

        public double Duration()
        {
            return lecteur.Duration;
        }

        public void Play()
        {
            lecteur.Play();
        }

        public void Stop()
        {
            lecteur.Stop();
        }
    }
}


J'ai besoin de votre aide pour faire fonctionner ce trackBar, et optimiser mon code.
  • Partager sur Facebook
  • Partager sur Twitter
23 mars 2012 à 7:17:08

Le message qui suit est une réponse automatique.
Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
Nous sommes néanmoins ouverts à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


Sujet en double


Bonjour,

Tu as déjà posté un autre sujet concernant le même problème. Ceci rend les discussions sur le forum difficiles à suivre, pour toi comme pour les autres. Afin de garder les forums bien organisés, je ferme ce sujet et invite tous les membres à participer sur l'autre sujet.

Merci de ta compréhension :)
  • Partager sur Facebook
  • Partager sur Twitter
Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »