У меня есть приложение Compact Framework 3.5, которое отвечает за сканирование штрих-кодов. В зависимости от ситуации он должен воспроизводить 3 разных звука, поэтому я создал класс-оболочку для объекта SoundPlayer и вызвал для этого метод Play.
public static class SoundEffectsPlayer
{
private static readonly SoundEffect _alert;
static SoundEffectsPlayer()
{
// This will cause the SoundEffect class to throw an error that the Uri
// Format is not supported, when new SoundPlayer(location) is called.
_alert = new SoundEffect("SoundEffects/alert.wav");
}
public static SoundEffect Alert
{
get { return _alert; }
}
}
public class SoundEffect
{
private readonly SoundPlayer _sound;
public SoundEffect(string location)
{
_sound = new SoundPlayer(location);
_sound.Load();
}
public bool IsLoaded
{
get { return _sound.IsLoadCompleted; }
}
public void Play()
{
_sound.Play();
}
}
Идея состояла в том, чтобы не создавать SoundPlayer каждый раз, когда необходимо сканировать штрих-код (что будет несколько сотен раз в час). Так что я могу просто позвонить в Play уже загруженного файла.
Файл alert.wav находится в папке SoundEffects, которая находится в корне библиотечного проекта, на который ссылается приложение, и он настроен как встроенный ресурс. Что мне нужно передать в класс SoundEffects, чтобы загрузить файл WAV? Должен ли файл wav быть встроен в проект библиотеки?
Также кто-нибудь замечает что-то не так с тем, как я обращаюсь с воспроизведением wav-файлов? Это моя первая попытка чего-то подобного, поэтому я открыт для предложений по улучшению.