为什么我的WPF应用程序声音会中断?

3
这很奇怪...在我的C#,WPF应用程序中,我有一个按钮,当点击它时,会播放一个作为帮助文本的短音频剪辑。大约50%的时间它工作得非常好...另外50%的时间它被切断了,我不知道为什么。甚至被切断的位置也不同。
我想,也许代码超出范围或者其他原因导致它停止工作,所以我将它放入另一个线程...但完全没有效果...现在我不知道该怎么办了。
这是我的按钮单击事件的代码。
try
{
    string path = System.IO.Path.Combine(ConfigurationManager.AppSettings["MediaPath"], Global.Language);
    path = System.IO.Path.Combine(path, "visitorTypes.mp3");

    if (Global.PlaySound)
    {
        string p = path.ToString();
        MediaPlayer mplayer = new MediaPlayer();
        mplayer.Open(new Uri(p, UriKind.Absolute));
        mplayer.Play();
    }

    //a bunch of other code

}
catch (Exception ex)
{
    Util.HandleError(ex);
}   

想法是什么?
1个回答

8
可能是因为 mplayer 只有本地范围,导致其被垃圾回收了。尝试将媒体播放器对象作为一个具有应用程序生命周期的类的成员变量。

太好了!我有点尴尬,竟然没想到那个。你的解决方案本质上就是我试图用一个单独的线程来实现的,但是你的当然真正做到了什么。谢谢! - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接