c# – 使用.net多次播放wav文件异步
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 使用.net多次播放wav文件异步,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1645字,纯文字阅读大概需要3分钟。
内容图文
![c# – 使用.net多次播放wav文件异步](/upload/InfoBanner/zyjiaocheng/821/c9e68381b7c64f94bcfad292cb42b2fc.jpg)
我有一个应用程序,我需要在按下一个键时播放一个wav文件,我使用SoundPlayer类,但如果按下一个新键时正在播放另一个声音,它会停止声音再次播放它使它看起来很难看. …
有没有办法再次播放相同的声音,即使有另一个播放?
谢谢!
解决方法:
将Windows API中的PlaySound与SND_ASYNC和SND_NOSTOP标志结合使用.
http://www.pinvoke.net/default.aspx/winmm.playsound
用法
//And the actual usage
PlaySound (fileName, UIntPtr.Zero, (uint)(SoundFlags.SND_FILENAME | SoundFlags.SND_ASYNC | SoundFlags.SND_NOSTOP));
声明
[Flags]
public enum SoundFlags
{
/// <summary>play synchronously (default)</summary>
SND_SYNC = 0x0000,
/// <summary>play asynchronously</summary>
SND_ASYNC = 0x0001,
/// <summary>silence (!default) if sound not found</summary>
SND_NODEFAULT = 0x0002,
/// <summary>pszSound points to a memory file</summary>
SND_MEMORY = 0x0004,
/// <summary>loop the sound until next sndPlaySound</summary>
SND_LOOP = 0x0008,
/// <summary>don't stop any currently playing sound</summary>
SND_NOSTOP = 0x0010,
/// <summary>Stop Playing Wave</summary>
SND_PURGE = 0x40,
/// <summary>don't wait if the driver is busy</summary>
SND_NOWAIT = 0x00002000,
/// <summary>name is a registry alias</summary>
SND_ALIAS = 0x00010000,
/// <summary>alias is a predefined id</summary>
SND_ALIAS_ID = 0x00110000,
/// <summary>name is file name</summary>
SND_FILENAME = 0x00020000,
/// <summary>name is resource name or atom</summary>
SND_RESOURCE = 0x00040004
}
[DllImport("winmm.dll", SetLastError=true)]
static extern bool PlaySound(string pszSound, UIntPtr hmod, uint fdwSound);
更新
道歉,你是对的. API不能用于同时播放声音.你应该使用waveOut api.看看这篇文章:http://www.codeproject.com/KB/audio-video/cswavrec.aspx
内容总结
以上是互联网集市为您收集整理的c# – 使用.net多次播放wav文件异步全部内容,希望文章能够帮你解决c# – 使用.net多次播放wav文件异步所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。