1、微软提供的中文男声语音库(Microsoft Simplified Chinese)允许同时提交多个异步Speak(...)请求,微软的接口会自动按先后顺序朗读这些请求
2、有一批VW开头的语音库(比如VW Lily)不允许在一个Speak朗读结束前就提交另一个异步朗读,必须把第一个请求停止才能再请求第二个。
3、本来以为通过获得SetNotifyWindowMessage就可以接受语音朗读完成的消息,其实并非如此,只有微软的中文男声语音库才会在语音朗读结束后发送消息,VW语音库在朗读完成后根本不发送任何消息
4、最后只好使用SpeakCompleteEvent来获得语音朗读结束事件,在得知一个语音彻底朗读完成后,删除它,再提交一个新的Speak请求,这样就没问题了
5、还有一个要注意的地方,CoInitialize必须在每个线程执行一次,如果创建了新的线程做语音排队朗读的处理,在那个线程中必须调用CoInitialize一次,否则所有的COM调用全都会失败