定时器触发 - >音频文件无法干净播放

时间:2012-12-07 19:00:01

标签: windows-phone windows-phone-8

我正在编写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

1 个答案:

答案 0 :(得分:1)

您可能想尝试对手机设备进行硬关机/重启。我的结果与你的相似,然后一旦我对设备进行了硬重置,就会停止口吃声音。我尝试使用常规Timer,DispatcherTimer和MediaElement而不是SoundEffect。您可以在此处获取我的示例解决方案:http://sdrv.ms/Rfb7UM