C#SoundPlayer-应该是静态的还是基于实例的



我在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();

相关内容

  • 没有找到相关文章

最新更新