天天看點

java一定時間後消失_WPF mediaElement在一段時間後消失了

我有一個帶有WPF MediaElement和Image控件的使用者控件 . 此使用者控件再次用于更多使用者控件,該控件在兩種不同的布局中使用它 . 應用程式應該在循環中長時間顯示視訊和圖像清單 . 每個使用者控件将在特定時間段内加載,在此之後,将解除安裝該控件并加載下一個控件 . 當視訊每隔一段時間運作時,視訊的位置就會改變,以顯示視訊的特定部分 .

XAML代碼 . MediaElement位于Grid中,有一列和一行 .

C#代碼,設定源代碼

this.mediaElement.Source = item.Path;

this.mediaElement.Position = new TimeSpan(0, 0, 0);

this.mediaElement.Play();

C#代碼更改位置 . 使用DispatcherTimer完成此位置更改

t = TimeSpan.FromMilliseconds(Position);

mediaElement.Position = t;

C#代碼處理MediaElement . 我使用此代碼處理MediaElement,因為之前我發現在播放一段時間後MediaElement使用了太多記憶體并在一段時間後變得當機 . 下面的代碼修複了這個問題 .

mediaElement.Close();

mediaElement = null;

GC.Collect();

GC.WaitForPendingFinalizers();

該應用程式工作正常,但問題是在一段時間後(如20分鐘)WPF MediaElement消失 . 應用程式運作順暢(它不會被當機),圖像顯示,但MediaElement消失了 .

出現這個問題時,我做了一些調試并找到了這些 .

WPF MediaElement可見性是可見的 . Source具有正确的檔案名 . MediaElement不會隐藏在任何其他控件之後 .

但實際寬度和實際高度顯示為0 .

我檢查了所有代碼,找出高度和寬度變為零的位置 . 但找不到任何東西 . 是以我決定嘗試使用DispatcherTimer覆寫高度和寬度evey毫秒(隻是為了檢查是否可能) . 但即便如此,實際高度和寬度的0也保持不變 .

此外,應用程式似乎沒有使用過多的記憶體,其他一切似乎都很好 .

有沒有人知道為什麼會這樣?任何解決方案或解決方法?謝謝