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);
    }

questionAnswers(2)

yourAnswerToTheQuestion