我正在编写一个 Windows Phone 8 应用程序并尝试在计时器触发时播放音频文件(在本例中为 Metronome920.wav,一个 0.07 秒、6kb 的文件)。该文件在计时器触发时播放,但可能有 40-50% 的时间,当它播放时,它会发出噼啪声/爆裂声并且播放不干净。该应用程序非常简单,仅包含计时器/音频播放。我没有更改在 Visual Studio 中启动新项目时创建的默认 GUI 的 GUI。
这让我相信这可能是一个线程问题。有任何想法吗?
namespace AudioTest1
{
class MyTimer
{
private Timer t; //Windows.Threading.Timer
public MyTimer()
{
t = new Timer(new TimerCallback(timer_Tick), null, 0, 500);
}
private void PlaySound()
{
using (var stream = TitleContainer.OpenStream("Sounds\\Metronome920.wav"))
{
var effect = SoundEffect.FromStream(stream);
FrameworkDispatcher.Update();
effect.Play();
}
}
private void timer_Tick(object sender)
{
PlaySound();
}
}
}
我正在从 MainPage.xaml.cs 中的以下代码创建一个 MyTimer 对象:
public MainPage()
{
InitializeComponent();
MyTimer m = new MyTimer();
}
编辑:在设备上运行时发生的事情的音频文件位于以下位置:此处