我在C#(WPF(中使用SoundPlayer类,一遍又一遍地播放相同的.5s音频(按键时(。每次用户按下自定义屏幕键盘按钮时,都会播放声音。
static SoundPlayer soundPlayer = null;
try
{
soundPlayer = new SoundPlayer(@"c:mediaclick.wav");
}
catch (Exception e)
{
Logger.LogException(e);
}
// later on (usage)
try
{
soundPlayer?.Play();
}
有人能为我是否应该将这个SoundPlayer对象保持为静态或是否应该更改为基于实例提供一些指导吗?谢谢
有人能为我是否应该将此SoundPlayer对象保持为静态或是否应该更改为基于实例提供一些指导吗?
这取决于SoundPlayer
在应用程序中的使用位置和方式。若您将/可以始终使用SoundPlayer
的同一实例而不以任何方式对其进行修改,那个么您可以将其定义为类中的静态只读字段:
private static readonly SoundPlayer soundPlayer = new SoundPlayer(@"c:mediaclick.wav");
然后,无论类的运行时实例数量如何,都将只创建一个实例。Play()
方法将使用新线程播放.wav文件。
我认为这没有什么区别,因为无论哪种方式,它都只需要实例化一次——因为您播放的是同一个文件。
声明SoundPlayer
类型的类成员,并使用初始值设定项对其进行实例化。
static SoundPlayer soundPlayer = new SoundPlayer(@"c:mediaclick.wav");
或
SoundPlayer soundPlayer = new SoundPlayer(@"c:mediaclick.wav");
每当你需要播放声音时,你不需要对其进行空检查,只需调用
soundPlayer.Play();
对于资源处置,如果不再使用实例(例如,当窗口关闭时(,请在实例上调用Dispose
方法。
soundPlayer.Dispose();