我正在研究一种(至少密切相关的)虚拟键盘,并希望包括一些点击声音。对于我刚刚使用的测试
SoundPlayer player = new SoundPlayer(Resource2.click);
player .PlaySync();
现在我显然不希望它是同步的,因为它会冻结键盘。相反,如果在前一个单击声音仍在播放时单击了一个新按钮,我希望第一个按钮停止并从新的单击重新开始。每个按钮的声音总是相同的,大约。1 秒长,但可能有很多事件(打字速度)
所以我打算一起去
//Startup
SoundPlayer player = new SoundPlayer(Resource2.click);
player.Load();
和
//ButtonClickEvent
player.Stop()
player.Play()
//More stuff
虽然在环顾四周时我发现了这个线程: 如何使用 System.Media.SoundPlayer 异步播放声音文件?
我的做法是他的尝试#1,但他似乎有一个问题:“SoundPlayer 和嵌入式资源流没有立即处理”。现在我不太确定这是什么意思。如果我有许多不同的 SoundPlayer 对象,这是否只涉及内存问题?或者这是否可能会给我带来长期的问题,这是我在第一次测试中没有看到的。这是我的主要问题。另外:还有什么我忽略的可能偶尔会出现问题的东西吗?例如,在播放器未多次运行时停止播放器?