2

我正在编写一个 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();
    }

编辑:在设备上运行时发生的事情的音频文件位于以下位置:此处

4

1 回答 1

1

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

于 2012-12-07T21:16:12.443 回答