2017-01-06 198 views
0

我有一個基本的Windows窗體應用程序使用System.Windows.Media.MediaPlayer來播放MP3文件。主窗體有一個按鈕,可以打開第二個窗體。System.Windows.Media.MediaPlayer播放聲音兩次

Main Form

第二種形式具有單個按鈕時播放的MP3文件的3秒。

Second Form

一切正常,第一次,我打開第二個窗體,然後單擊播放按鈕。但是,如果我關閉第二個表單然後重新打開它,則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

萬一別人運行到同樣的問題,我發現似乎爲我工作的解決方案。我添加了一個調用關閉MediaPlayer對象時,第二種形式是封閉:

private void SecondForm_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     _mediaPlayer.Close(); 
    } 

這防止了我以前看到的時候我會再打開第二個形式重複音播放行爲。