odtwarzacz mp3 z kolejką plików

0

Cześć, to mój pierwszy post na forum więc proszę o wyrozumiałość :)

Dopiero zaczynam naukę programowania i wybrałem c#. Chciałem zrobić prosty odtwarzacz mp3 w wpf. Jak na razie działa wszystko. Można otwierać pliki przez okno dialogowe, ale chciałem żeby dało się otworzyć kilka plików naraz i zrobić z nich kolejkę. Posłużyłem się pętlą foreach.

public partial class MainWindow : Window
   {
       
       private MediaPlayer mediaPlayer = new MediaPlayer();
       OpenFileDialog openFileDialog1 = new OpenFileDialog();
       


       public MainWindow()
       {
           InitializeComponent();
       }
        
       private void btnWyjscie2_Click(object sender, RoutedEventArgs e)
       {
           Application.Current.Shutdown();
       }

       public void btnOtworz_Click(object sender, RoutedEventArgs e)
       {
           openFileDialog1.Multiselect = true;
           txtSciezka.Text = "";

           if (openFileDialog1.ShowDialog() == true)
           {
              foreach (string file in openFileDialog1.FileNames)
               {
                   txtSciezka.AppendText(Path.GetFileName(file) + Environment.NewLine);
                   mediaPlayer.Open(new Uri(file));
                   mediaPlayer.Play();
               }

Petla chyba działa, bo dodaje tekst do textBoxa z nazwą wybranych plików, ale po odtworzeniu pierwszego utworu program przestaje działać więc chyba nie dodaje pozostałych plików do kolejki. Proszę o radę, co z tym zrobić.

Michał

2

Problem w tym, że mediaPlayer.Open() nie dodaje ci nic do kolejki tylko otwiera nowy plik. Na moje oko (nie mam 100% pewności bo nie korzystałem z tej klasy) otwierasz wszystkie pliki jeden po drugim i zanim usłyszysz pierwszy plik to w foreach już go zmieniasz na kolejny. W efekcie odtwarzasz tylko ostatni plik. Jednym ze sposobów w jaki możesz osiągnąć swój cel jest na przykład subskrypcja eventa MediaEnded, który poinformuje cię, że pierwszy utwór właśnie się zakończył. Wtedy możesz uruchomić kolejny.

0

Dzięki za odpowiedź, będę kombinował w tym kierunku :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1