バーコードのスキャンを担当するCompactFramework3.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();
}
}
バーコードをスキャンする必要があるたびに(1時間に数百回)SoundPlayerを作成しないというアイデアでした。したがって、すでにロードされているファイルに対してPlayを呼び出すことができます。
alert.wavファイルは、アプリケーションが参照するライブラリプロジェクトのルートにあるSoundEffectsフォルダーにあり、埋め込みリソースとして設定されています。wavファイルをロードするには、SoundEffectsクラスに何を渡す必要がありますか?wavファイルをライブラリプロジェクトに埋め込む必要がありますか?
また、wavファイルの再生を処理する方法に何か問題があることに気付いた人はいますか?このようなことを試みるのはこれが初めてなので、改善のための提案を受け付けています。