我正在为c#中的媒体播放器开发WPF应用程序,我正在使用mediaElement控件来托管媒体。
由于我希望用户能够在播放器中加载视频和图像,我在 mediaOpened 事件中创建了一个简单的 if-then-else 语句,每次加载新媒体时检查,是否具有Timespan(因此播放器将其视为视频),或者作为图片。
要检查此 if / else 语句是否有效,我在每种情况下都会设置一个消息框,以便向我提供反馈,确实该播放器能够正确识别媒体类型。
到目前为止一切顺利。
我加载了一个视频,一切都按预期进行,我的消息框显示"视频!"。
但是当我加载第二个视频时,消息框会出现2次。
当我再加载一个视频时,消息框会出现3次!
即使更奇怪,如果我接下来加载图片,消息框会出现4次,而不是像这样的消息框序列,
"视频&#34!; "视频&#34!; "视频&#34!; "图片!",我得到
"图像&#34!; "图片&#34!; "图片&#34!; "!图片&#34 ;.
似乎播放器将媒体(或mediaOpened事件)存储在某种列表中,每次加载新媒体时,它都会检查该列表中的所有媒体,并为每个媒体提供一条消息。 (我还没有编写任何代码来支持播放列表功能,所以我不知道这些媒体可以存储在哪里......)
当用户按下加载新媒体按钮时,我尝试将mediaElement的源声明为null,以确保在加载新媒体之前mediaElement源是干净的,但它没有任何效果。< / p>
这听起来像内存泄漏吗? 我错过了一个特定的卸货活动吗? 谢谢!