簡體   English   中英

在WPF中缺少帶有EventHandler的事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM