Для приложения XNA:
В методе update () проверьте поле playingSound.State вашего звукового эффекта и, если воспроизведение остановилось, воспроизведите другое.
Для Silverlight:
Эта часть немного сложна, поскольку SoundEffectInstance был разработан как часть XNA. Например, вы можете создать свой собственный цикл с помощью таймера, а внутри обработчика событий добавить логику проверки состояния.
Вторая идея состоит в том, чтобы использовать таймер с интервалом, установленным на продолжительность воспроизводимого вами звука, и добавить флаг, подобный bool isPlaying . При первом воспроизведении установите флаг isPlaying на true и запустите таймер. В обработчике таймера установите флаг isPlaying на false . Каждый раз, когда вы нажимаете кнопку, установите флажок isPlaying . Другими словами, создайте свою собственную логику игрового состояния.
Вы можете комбинировать эти методы.