private async Task ClearVideoElement(bool seek) { await Task.Run(async() => { await VideoElement.Stop(); Dispatcher.Invoke(() => { VideoElement.Position = new TimeSpan(0); VideoElement.Source = null; VideoElement.Dispose(); VideoElement = null; VideoElementBorder.Visibility = Visibility.Hidden; VideoElement = new Unosquare.FFME.MediaElement { IsMuted = true, LoadedBehavior = MediaState.Manual, Visibility = System.Windows.Visibility.Visible, }; VideoElement.MediaOpened += VideoElement_MediaOpened; VideoElement.MediaFailed += VideoElement_MediaFailed; VideoElement.MediaEnded += (sender, e) => { VideoElement.Position = TimeSpan.FromSeconds(0); }; if (seek) { VideoElement.SeekingStarted += (sender, e) => { }; VideoElement.SeekingEnded += (sender, e) => { if (!_videoPlay) { return; } PlayMedia(); }; } VideoElementBorder.Children.Add(VideoElement); }); }); }