System.Windows.Media.MediaPlayer播放声音两次
问题描述:
我有一个基本的Windows窗体应用程序使用System.Windows.Media.MediaPlayer来播放MP3文件。主窗体有一个按钮,可以打开第二个窗体。System.Windows.Media.MediaPlayer播放声音两次
第二种形式具有单个按钮时播放的MP3文件的3秒。
一切正常,第一次,我打开第二个窗体,然后单击播放按钮。但是,如果我关闭第二个表单然后重新打开它,则MP3播放行为不正常。通常它播放声音两次。有时会在几秒钟的延迟后播放声音。
从截图中可以看到,我在Windows XP中运行应用程序。我也尝试在Windows 10机器上运行它,并且没有发生问题。任何帮助确定这种行为的原因将不胜感激。
这里是起着MP3文件第二种形式的代码:
public partial class SecondForm : Form
{
public SecondForm()
{
InitializeComponent();
}
private string _tone = Path.Combine("Resources", "beep-17.mp3");
private int _toneDuration = 3000;
System.Windows.Media.MediaPlayer _mediaPlayer = new System.Windows.Media.MediaPlayer();
private void PlayMP3Form_Load(object sender, EventArgs e)
{
string mp3Path = Path.GetFullPath(_tone);
Uri mp3File = new Uri(mp3Path);
_mediaPlayer.Open(new Uri(mp3File.AbsoluteUri));
}
private void buttonPlay_Click(object sender, EventArgs e)
{
_mediaPlayer.Position = TimeSpan.FromMilliseconds(_mediaPlayer.NaturalDuration.TimeSpan.TotalMilliseconds - _toneDuration);
_mediaPlayer.Play();
}
}
答
万一别人运行到同样的问题,我发现似乎为我工作的解决方案。我添加了一个调用关闭MediaPlayer对象时,第二种形式是封闭:
private void SecondForm_FormClosed(object sender, FormClosedEventArgs e)
{
_mediaPlayer.Close();
}
这防止了我以前看到的时候我会再打开第二个形式重复音播放行为。