タイトルが全てですが、MediaPlayerElementに紐づけたMediaPlayerをDisposeしたい場合、先にSetMediaPlayer(null); を呼ぶ必要があります。
MediaPlayer? mediaPlayer;
void InitializeMediaPlayerAndAtatchToMediaPlayerElement()
{
mediaPlayer = new MediaPlayer();
MyMediaPlayerElement.SetMediaPlayer(mediaPlayer);
}
[Obsolete]
void DisposeMediaPlayer_Before_DetachFromMediaPlayerElement()
{
// SetMediaPlayer(null)より先にDisposeを呼ぶと例外が発生し、
// UnloadやPageのNavigationFrom処理が途中の場合、
// Xaml描画が崩れる原因にもなりうる。
// mediaPlayer?.Dispose();
}
void DisposeMediaPlayer_After_DetachFromMediaPlayerElement()
{
// MediaPlayerElementからデタッチした後でDisposeを呼ぶと問題ない。
MyMediaPlayerElement.SetMediaPlayer(null);
mediaPlayer?.Dispose();
mediaPlayer = null;
}