WPF MediaPlayer: Como reproduzir em sequência, sincronizar?
Tenho esta função:
public static void Play(string FileName, bool Async = false)
{
System.Windows.Media.MediaPlayer mp = new System.Windows.Media.MediaPlayer();
mp.Open(FileName.ToUri());
mp.Play();
}
Quando eu ligo
Play(@"file1.mp3");
Play(@"file2.mp3");
Play(@"file3.mp3");
Play(@"file4.mp3");
todos eles jogam ao mesmo temp
Como posso fazer com que o MediaPlayer aguarde o final do arquivo para reproduzir o próximo? Como deve ser a função?
EDITAR
public static void Play(Uri FileName, bool Async = false)
{
AutoResetEvent a = new AutoResetEvent(false);
MediaPlayer mp = new MediaPlayer();
mp.MediaEnded += (o1, p1) =>
{
a.Set();
};
mp.MediaOpened += (o, p) =>
{
int total = Convert.ToInt32(mp.NaturalDuration.TimeSpan.TotalMilliseconds);
mp.Play();
if (!Async)
{
//System.Threading.Thread.Sleep(total);
a.WaitOne();
}
};
mp.Open(FileName);
}