我有一个基本的Windows窗体应用程序,它使用System.Windows.Media.MediaPlayer来播放MP3文件。主窗体有一个按钮,可以打开第二个窗体。
第二种形式有一个按钮,播放3秒的MP3文件。
第一次打开第二个表单并单击“播放”按钮时,一切正常。但如果我关闭第二个表格然后重新打开它,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();
}
}
答案 0 :(得分:0)
如果其他人遇到同样的问题,我找到了一个似乎对我有用的解决方案。我在第二个表单关闭时添加了一个关闭MediaPlayer对象的调用:
private void SecondForm_FormClosed(object sender, FormClosedEventArgs e)
{
_mediaPlayer.Close();
}
这可以防止重新打开第二种形式时我之前看到的重复音调播放行为。