2012-02-27 12 views
3

これは変です...私のC#のWPFアプリケーションでは、クリックするとヘルプテキストとして機能する短いオーディオクリップが再生されます。それが美しく働く時間の約50%...それは他の50%がカットされて、私は理由を理解することができません。たとえそれが切り取られている点さえも変わります。WPFアプリケーションでサウンドが途切れるのはなぜですか?

私は、コードが範囲外か何か外に出て止まってしまったので、別のスレッドに入れてしまったと思っていました...それはまったく動作しませんでした。行う。

ここは、私のボタンのクリックイベントのコードです。

try 
{ 
    string path = System.IO.Path.Combine(ConfigurationManager.AppSettings["MediaPath"], Global.Language); 
    path = System.IO.Path.Combine(path, "visitorTypes.mp3"); 

    if (Global.PlaySound) 
    { 
     string p = path.ToString(); 
     MediaPlayer mplayer = new MediaPlayer(); 
     mplayer.Open(new Uri(p, UriKind.Absolute)); 
     mplayer.Play(); 
    } 

    //a bunch of other code 

} 
catch (Exception ex) 
{ 
    Util.HandleError(ex); 
} 

考えられますか?

答えて

8

mplayerは、ローカルスコープを持っているためガベージコレクトされている可能性があります。メディアプレーヤーオブジェクトを、アプリケーションの存続期間を持つクラスのメンバ変数にしてみてください。

+0

これがうまくいった!私は少し恥ずかしいですが、私はそれを考えませんでした。あなたのソリューションは本質的に私が別のスレッドでやろうとしていたものですが、あなたのものは実際に何かをしました。 ありがとう! – David

関連する問題