2013-02-13 39 views
0

我有大型的WPF應用程序,它也使用MEF。 我想在某些條件下觸發音頻提示,並按用戶指定的時間重複播放。音頻文件可以是.wav或.mp3。Apprpriate Timer對象在WPF中運行音頻

我正在使用SoundPlayer播放音頻。 我不確定哪個計時器用於重複間隔。

我不想在音頻播放時阻止UI線程,也希望它是線程安全的。

在此先感謝。

回答

0

爲什麼不考慮使用Event Aggregation,它是發佈者訂閱者模式的實現。只要應用程序遇到想要播放音頻的條件,它就會通過事件聚合器發佈它的內容。

會有一個監聽者監聽這些事件,並根據事件的類型播放正確的音頻。如果有多個請求,監聽器可以並行或按順序播放它們。您可以在收聽者和標準線程睡眠模式下實現所需的線程模型

這樣,您就可以將所有音頻配置和邏輯放在單個模塊後面。所有其它模塊將只是「告訴」這個模塊他們要玩什麼(和可選多長時間)

在另一方面,除非你的應用是足夠大,上面的方法將是一個矯枉過正

一關於事件聚合的好寫作 http://codebetter.com/glennblock/2009/02/23/event-aggregation-with-mef-with-and-without-eventaggregator/