首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Media.SoundPlayer选择播放

System.Media.SoundPlayer选择播放
EN

Stack Overflow用户
提问于 2013-08-14 21:49:02
回答 1查看 146关注 0票数 0

我有一个小应用程序,目的是当用户按下一个键时,会发生一些事情。

  1. 创建用于记录击键的对象的新实例。
  2. 检查字典,获取System.Media.Soundplayer类的实例
  3. 修改屏幕上某个部分的背景色。
  4. 播放,异步,.wav文件在SoundPlayer中

字典和SoundPlayer实例在加载表单时被实例化,所有SoundPlayer实例在添加到字典之前都会同步加载() .wav文件。

表单的KeyDown事件如下所示:

代码语言:javascript
复制
//do stuff up here, get the type, etc etc
//players is Dictionary<EnumFoo, SoundPlayer>

SoundPlayer sound = players[type];
sound.Play();

this.KeyUp += (sUp, eUp) =>
{
    DateTime endTime = DateTime.Now;
    foo.Duration = endTime - startTime;
    sound.Stop();
    this.resetColors();
};

我的问题是:它只播放较短的声音。有的长到30秒,有的小于5秒。如果我在SoundPlayer实例化后的任何地方放置断点,那么即使长的声音也能正确播放。

我正在考虑使用一个ThreadPool并对这些项进行排队,但是该选项有它自己的一组分支。

有什么想法吗?我以前从来没跟媒体课混过。

EN

回答 1

Stack Overflow用户

发布于 2013-08-15 16:07:12

噢,我刚意识到为什么会发生这种事。一个三步的答案

  1. 一个错误的假设是,当我按住键时,只有一个KeyDown事件被触发。这是不准确的。它会多次开火。
  2. 我被指到了错误的音频文件,其中有一段静默的开始噪音。
  3. 漫长的一天和糟糕的测试。代码本身是很好的(至少,对于我需要它的丢弃应用程序是可行的)--它只是我的测试很差。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18242918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档