【问题标题】:Why does SoundPlayer intermittently hang on playback?为什么 SoundPlayer 播放时会间歇性挂起?
【发布时间】:2010-11-30 19:15:05
【问题描述】:

我有一个 WPF 应用程序,我在其中使用 SoundPlayer 来播放一些短促的声音,例如键盘点击。有时,看似随机的声音会停止播放。当我离开页面时,声音将在一次尖锐的播放中同时播放。

我的问题是,为什么会发生这种情况有什么明显的原因吗?

我已经尝试了几件事,但由于我无法始终如一地重现该问题,因此很难找到原因。声音在整个应用程序中使用,因此我将它们在 app.xaml.cs 中加载到应用程序范围的静态集合中。我打电话给SoundPlayer.Load() 以确保它们立即加载到内存中。

就像我说的,这永远不会完全停止工作。回放似乎堆积起来,直到导航到另一个页面,它们都同时播放。

可能会产生影响的另一件事是我在应用程序中显示网络摄像头提要。使用 DirectShow.NET 库加载网络摄像头源。我不确定加载图表是否会对声音的播放产生任何不利影响。

【问题讨论】:

    标签: wpf .net-3.5 audio directshow.net


    【解决方案1】:

    我想网络摄像头正在更新一个 UI 元素,这将导致 UI 线程非常繁忙,在这种情况下,您可能不想使用 SoundPlayer.PlaySync()SoundPlayer.Load 两者都会阻塞当前线程。

    改为尝试使用单独线程的SoundPlayer.LoadAsync()SoundPlayer.Play()

    【讨论】:

    • 我刚刚试了一下,你也让我意识到我滥用SoundPlayer.Load()SoundPlayer.Play() - 一个是用于同步另一个异步。我已经在不知不觉中在单独的线程中播放它们。添加SoundPlayer.LoadAsync() 并没有解决问题。我做了一个实验来同步加载和播放声音。这实际上导致应用程序在遇到声音问题时挂起并且没有响应,大概是因为线程现在正在等待某些东西并且拒绝继续。
    • 您是否尝试停止网络摄像头供稿以查看它是否与此直接相关?
    • 我确实停止了提要,但无法重现声音问题。我不知道这是否是直接关系,或者是否涉及其他共同因素。
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多