我正在编写Windows Phone 8应用程序,并且在计时器触发时我正在尝试播放音频文件(在本例中为Metronome920.wav,一个0.07s,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();
}
编辑:在设备上运行时发生的音频文件位于以下位置:here
答案 0 :(得分:1)
您可能想尝试对手机设备进行硬关机/重启。我的结果与你的相似,然后一旦我对设备进行了硬重置,就会停止口吃声音。我尝试使用常规Timer,DispatcherTimer和MediaElement而不是SoundEffect。您可以在此处获取我的示例解决方案:http://sdrv.ms/Rfb7UM