我有大型WPF应用程序也使用MEF。 我想在某些条件下触发音频警报,并在用户指定的时间内重复它。音频文件可以是.wav或.mp3。
我正在使用SoundPlayer播放音频。 我不确定哪个计时器用于重复间隔。
我不想在播放音频时阻止UI线程,也希望它是线程安全的。
提前感谢。
答案 0 :(得分:0)
为什么不考虑使用Event Aggregation,它是发布者订阅者模式的实现。每当您的应用程序遇到想要播放音频的情况时,它都会通过事件聚合器发布其内涵。
会有一个听众倾听这些事件,并根据事件的类型播放正确的音频。如果有多个请求,则侦听器可以并行或按顺序播放它们。您可以在侦听器和标准线程睡眠
中实现所需的线程模型这样,您可以将所有音频配置和逻辑隐藏在单个模块后面。所有其他模块将只是“告诉”该模块他们想要播放的内容(以及可选的持续时间)
另一方面,除非您的申请量足够大,否则上述方法将是一种过度杀伤
关于事件聚合的良好记录 http://codebetter.com/glennblock/2009/02/23/event-aggregation-with-mef-with-and-without-eventaggregator/