2010-11-30 83 views
1

我有一个WPF应用程序,我在其中使用SoundPlayer播放几个简短的声音,如键盘单击。有时,看似随意,声音将停止播放。当我离开页面时,声音会在一个尖叫回放中一次播放。为什么SoundPlayer在播放过程中间歇性挂起?

我的问题是,是否有任何明显的原因为什么会发生?

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

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

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

回答

0

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

而是尝试使用SoundPlayer.LoadAsync()SoundPlayer.Play(),它们使用单​​独的线程。

+0

我刚刚给了一个尝试,你也让我意识到我``SoundPlayer.Load()`与`SoundPlayer.Play()`结合使用的误用 - 一个用于同步另一个异步。我已经不知不觉地在一个单独的线程中播放它们。添加`SoundPlayer.LoadAsync()`并没有解决这个问题。 我做了一个实验来同步加载和播放声音。这实际上导致应用程序挂起,并且在遇到声音问题时没有响应,可能是因为线程现在正在等待并拒绝继续。 – Sio 2010-11-30 19:56:09

相关问题