24/7电脑,使用mediaelement WPF出现问题,3小时后变黑

3

我有一台电脑将要运行一个WPF程序,并播放图像和视频的播放列表,需要24/7不间断运行。

当我启动程序时,一切都运行得非常完美,但是大约2-3小时后,媒体元素窗口就变成了黑色。

程序启动时,会读取文件夹中的所有文件名并将其放入列表框中。

 Dim root As String = MediaDir & "media"
    Dim dir As New System.IO.DirectoryInfo(root)
    Dim fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories)

    Dim fileQuery = From file In fileList _
                    Where file.Extension = ".jpg" _
                    Or file.Extension = ".avi" _
                    Or file.Extension = ".mov" _
                    Order By file.Name _
                    Select file

    For Each file In fileQuery
        listbox1.Items.Add(file.FullName)
    Next
    i = 0
    Media_Org.Source = New Uri(listbox1.Items(i), UriKind.Relative)

下一步是使用MediaEnded加载下一个。
    Private Sub Media_Org_MediaEnded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Media_Org.MediaEnded

            i = i + 1
            If i = listbox1.Items.Count Then
                i = 0
            End If
            Media_Org.Source = New Uri(listbox1.Items(i), UriKind.Relative)
End Sub

有什么建议吗?

"我还有一个问题,就是当我播放视频时,CPU 占用率会达到60-70%左右。"


该程序可能存在GDI句柄泄漏。这很可能是WPF中的一个错误。您可以尝试每次显示新媒体时创建一个新的媒体元素。还有一个热修复程序可用,如此处所讨论的。 - Dirk Vollmar
似乎这个热修补只适用于Vista,而我正在运行XP嵌入式系统,但还是谢谢。 - johan
1个回答

1
我曾经在一个项目上工作,该项目将播放文件夹中的视频,并且视频会定期添加到该文件夹中。有时媒体元素看起来并未播放文件,但视频的位置仍在继续。我们曾与微软交谈,得出结论这是MediaElement控件中的错误。最终我们采用了WPF MediaKit http://wpfmediakit.codeplex.com/,这解决了大部分问题。希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接