我正在通过创建一个钢琴应用程序来传递我的时间。每个键都由一个简单的按钮和一个点击时触发的命令代表。这导致视图模型执行这个方法: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'的全部要点。 –