在我的应用程序中,通常应该有两个重叠的声音(一首歌和一些短声音)。它工作得很好,直到有时歌曲突然停止播放。你知道我该怎么解决这个问题吗?下面是我用来添加歌曲和声音的函数:
private void musical()
{
var p1 = new System.Windows.Media.MediaPlayer();
p1.Open(new System.Uri(@"J:\penalty\penalty\penalty\bin\Debug\Avicii - The Nights (Lyrics HD).wav"));
p1.Play();
}
private void happy()
{
System.Threading.Thread.Sleep(500);
var p2 = new System.Windows.Media.MediaPlayer();
p2.Open(new System.Uri(@"J:\penalty\penalty\penalty\bin\Debug\happy.wav"));
p2.Play();
}
private void sad()
{
System.Threading.Thread.Sleep(500);
var p2 = new System.Windows.Media.MediaPlayer();
p2.Open(new System.Uri(@"J:\penalty\penalty\penalty\bin\Debug\sad.wav"));
p2.Play();
}发布于 2018-04-28 22:46:49
如果您不存储对MediaPlayer字段的引用,而只是将其存储在局部变量中,则它们很可能会被大量收集。这可能会延迟发生,因为MediaPlayer使用需要Dispose才能释放的非托管资源。要解决您的问题,请考虑在字段中存储对MediaPlayer的引用。
private System.Windows.Media.MediaPlayer _music;
private System.Windows.Media.MediaPlayer _happy;
private System.Windows.Media.MediaPlayer _sad;然后调整您的方法,改为使用该字段。
private void musical()
{
_music = new System.Windows.Media.MediaPlayer();
_music.Open(new System.Uri(@"J:\penalty\penalty\penalty\bin\Debug\Avicii - The Nights (Lyrics HD).wav"));
_music.Play();
}如果你想重复音频(不能很好地工作),你可以按顺序订阅MediaEnded事件,将位置设置回开头,然后重新开始播放。
https://stackoverflow.com/questions/50074501
复制相似问题