現在、ピアノアプリを作成して時間を過ごしています。各キーは、クリックすると起動するコマンドを持つ単純なボタンで表されます。これはViewModelには、この方法を実行につながる:C#WPF Windows Media Playerを呼び出す
private void PlaySound(object parameter)
{
var mediaPlayer = new MediaPlayer();
mediaPlayer.Open(new System.Uri(@SoundBar.GetSoundPathByIdent(int.Parse(parameter.ToString()))));
mediaPlayer.Play();
{
私は問題がMediaPlayerのがそれを集めるからGarbageCollectorを防ぐ弱い参照を残していることだと思います。しばらく再生した後にRAMのオーバーロードにつながります。
私が見つけた解決策は、mediaPlayer.Close();を呼び出すことでした。 しかし、これはサウンドの再生が終了した後でなければなりません。さもなければ、それはカットされます。
再生されたサウンドの再生が終了したかどうかを確認する方法はありますか?
私はすでに研究とテストをしばらく費やしていましたが、実際の解決策は思いつきませんでした。
['WeakReference'](https://msdn.microsoft.com/en-us/library/system.weakreference(v = vs.110).aspx)**ではガベージコレクタが収集できない**参照。それが「WeakReference」の全ポイントです。 –