【发布时间】:2018-09-04 15:28:52
【问题描述】:
我努力在 C++/Visual Studio 下找到以下需求的解决方案:
这很简单:出于警觉的目的,我必须在无限循环中按顺序播放文件中的多个 wav 声音,每个声音之间有一个短暂的延迟:
sound-1 ...sound-2 ... sound-n ... sound-1 ... sound-2 ...
应该可以随时取消这一系列声音。
我尝试过使用PlaySound(),但问题是,一旦声音运行,我就无法正确停止它们。
https://msdn.microsoft.com/en-us/library/Dd743680(v=VS.85).aspx
当一个声音通过标志异步播放时,可以通过为参数1指定一个NULL来停止它,但是在sound-2开始之前我不知道sound-1什么时候结束.事实上,启动 sound-2 会中断 sound-1。
然而,在同步模式下,声音的中断是不可能的。
为了能够取消声音,我尝试将 PlaySound 放入 Poco::Thread,但如何取消线程?取消线程是不可预见的......使用Poco::Task instaed 在取消时会给出unhandled exception at 0x01002d62 ...,所以它也不起作用。
对此的首选解决方案是什么? 有没有更好的解决方案?
谢谢!
【问题讨论】:
标签: c++ windows multithreading audio poco