Windows Phone 8 アプリケーションを作成していて、タイマーが起動したときにオーディオ ファイル (この場合は Metronome920.wav、0.07 秒、6 kb ファイル) を再生しようとしています。タイマーが起動するとファイルが再生されますが、おそらく 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();
}
編集: デバイスでの実行時に何が起こっているかのオーディオ ファイルは、次の場所にあります:こちら