[英]Missing a Event with a EventHandler in WPF
我最近創建了WPF游戲,其中最后添加的是音樂,只是帶有循環的mp3。
這就是我要做的。
Music = new MediaPlayer();
Music.Open(new Uri("Sounds/MyMusic.mp3", UriKind.Relative));
Music.MediaEnded += MusicEnded;
Music.Play();
private void MusicEnded(object sender, EventArgs e)
{
Music.Stop();
Music.Play();
}
游戲運行正常,我們使用了3天,持續了2多個小時,沒有出現問題,但是有1天音樂剛剛停止,其他聲音一直在播放。
怎么會這樣 事件處理程序可以錯過1個事件嗎? 在這種情況下,由於沒有人監視EventHandler或音樂,因此我的代碼將停止工作。
如何改善此代碼? 或避免這種情況發生?
嘗試在音樂結束而不停止和開始時設置Position poroperty
對於XNA mediaplayer,您可以使用IsRepeating屬性http://msdn.microsoft.com/zh-cn/library/microsoft.xna.framework.media.mediaplayer.isrepeating.aspx
您是否從GUI線程開始播放音樂?
如果您的GUI線程忙於做其他事情並且錯過了事件,那是為什么。 Maby花費一些時間進行額外的循環並嘗試重復問題。
重復的另一種方式:
private void MusicEnded(object sender, EventArgs e)
{
Music.Position = TimeSpan.FromSeconds(0);
Music.Play();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.