0

MEFも使用する大規模なWPFアプリケーションがあります。特定の条件で音声アラートをトリガーし、ユーザーが指定した時間だけ繰り返したいと考えています。オーディオ ファイルは .wav または .mp3 です。

私はSoundPlayerを利用してオーディオを再生しています。繰り返し間隔に使用するタイマーがわかりません。

オーディオの再生中に UI スレッドをブロックしたくないし、スレッドセーフにしたい。

前もって感謝します。

4

1 に答える 1

0

パブリッシャー サブスクライバー パターンの実装であるイベント アグリゲーションの使用を検討してみませんか。アプリケーションは、オーディオを再生したい状況に遭遇するたびに、イベント アグリゲーターを介してその意図を公開します。

これらのイベントをリッスンし、イベントのタイプに基づいて正しいオーディオを再生するリスナーが存在します。複数のリクエストがある場合、リスナーはそれらを並行して、または順番に再生できます。リスナーと標準のスレッドスリープ内で目的のスレッドモデルを実装できます

このようにして、すべてのオーディオ構成とロジックを 1 つのモジュールの後ろに押し込むことができます。他のすべてのモジュールは、このモジュールに何を再生したいか (オプションでどれくらいの長さか) を「伝える」だけです。

一方、アプリケーションが十分に大きくない限り、上記のアプローチはやり過ぎです。

イベント集約に関する優れた記事 http://codebetter.com/glennblock/2009/02/23/event-aggregation-with-mef-with-and-without-eventaggregator/

于 2013-02-14T05:16:48.103 に答える