2010-11-30 17 views
1

私はSoundPlayerを使用してキーボードのクリックなどのいくつかの短い音を鳴らすWPFアプリケーションを持っています。時々、一見無作為に、音が止まるでしょう。私がページから離れて移動すると、サウンドは1回の再生で一度にすべて再生されます。再生時にSoundPlayerが断続的にハングするのはなぜですか?

私の質問、これが起こる理由として任意の明白な理由があるのですか?

私はいくつかのことを試してみたが、私は一貫して問題を再現することはできませんので、それが原因を見つけるのは難しいです。サウンドはアプリケーション全体で使用されるため、app.xaml.csのサウンドをアプリケーションスコープの静的コレクションにロードします。 SoundPlayer.Load()に電話して、すぐにメモリにロードされるようにします。

私が言ったように、これは完全に動作することは決してありません。プレイバックは、すべてが一度に再生される別のページにナビゲートするまで積み重なっているようです。影響を与える可能性があり

もうひとつは、私がアプリケーション内のウェブカメラフィードを表示していますということです。 Webカメラのフィードは、DirectShow.NETライブラリを使用して読み込まれます。グラフを読み込んでも音の再生に悪影響が及ぶかどうかはわかりません。

答えて

0

WebカメラがUI要素を更新してUIスレッドがかなりビジー状態になっているとします。この場合、おそらく現在両方のスレッドをブロックするSoundPlayer.PlaySync()またはSoundPlayer.Loadを使用しないとします。

代わりに別のスレッドを使用しSoundPlayer.LoadAsync()SoundPlayer.Play()を試してみてください。

+0

私はちょうどその試みを与え、あなたはまた、私は 'SoundPlayer.Play()'と一緒に 'SoundPlayer.Load()'の私の誤用を実感しました - 1は、同期のために他の非同期です。私はすでに無意識のうちに別のスレッドで演奏していました。 'SoundPlayer.LoadAsync()'を追加しても問題は解決されていません。 音を同期して読み込んで再生する実験を行った。これは、実際にはアプリケーションがハングアップし、サウンドの問題が発生したときに応答しません。おそらくスレッドが何かを待っていて、続行を拒否しているためです。 – Sio

+0

ウェブカムフィードを試してそれを直接停止してみましたか? – BrokenGlass

+0

私はフィードを停止し、音の問題を再現できませんでした。私はこれが直接の関係か、別の共通要素が関わっているかどうかはわかりません。 – Sio

関連する問題