Я использовал звук в своем приложении и использовал код из примера, приведенного на веб-сайте примеров кода MSDN: http://msdn.microsoft.com/en-us/library/ff431744(v=vs.92).aspx
Похоже, они обновляют таймер каждые 50 мс. Также обратите внимание, что переменные SoundEffect
(coyoteSound
и birdSound
) являются частными элементами данных, где они загружаются только один раз. Обработчик событий по нажатию кнопки просто вызывает SoundEffect.play()
.
public MainPage()
{
InitializeComponent();
LoadSound("Resources/NightAmbientCreatureOneShot_01.wav", out coyoteSound);
LoadSound("Resources/AfternoonAmbientBirdOneShot_09.wav", out birdSound);
LoadSoundInstance("Resources/NightAmbienceSimple_01.wav", out ambienceSound, out ambienceInstance);
// Set the volume a little lower than full so it becomes the background.
ambienceInstance.Volume = 0.8f;
// Turn on looping so it runs continually in the background.
ambienceInstance.IsLooped = true;
// Timer to simulate the XNA game loop (SoundEffect classes are from the XNA Framework)
DispatcherTimer XnaDispatchTimer = new DispatcherTimer();
XnaDispatchTimer.Interval = TimeSpan.FromMilliseconds(50);
// Call FrameworkDispatcher.Update to update the XNA Framework internals.
XnaDispatchTimer.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };
// Start the DispatchTimer running.
XnaDispatchTimer.Start();
}