我正在通過創建一個鋼琴應用程序來傳遞我的時間。每個鍵都由一個簡單的按鈕和一個點擊時觸發的命令代表。這導致視圖模型執行這個方法: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從收集它的WeakReference的。玩一段時間後導致RAM超載。
我找到的解決方案是調用:mediaPlayer.Close(); 但是,這應該只發生在聲音播放結束後,否則會被切斷。
有沒有辦法檢查播放的聲音是否已完成播放?
我已經花了一些時間做研究和測試,但我無法想出一個工作解決方案。
['WeakReference'](https://msdn.microsoft.com/en-us/library/system.weakreference(v = vs.110).aspx)does not不**防止垃圾收集器收集參考資料。這是'WeakReference'的全部要點。 –