void Player_PositionChanged(object sender, MpvPlayerPositionChangedEventArgs e) { Dispatcher.BeginInvoke(new Action(() => { if (player.IsPlaying) { Seek(e.NewPosition, player); } })); }
private void _player_PositionChanged(object sender, MpvPlayerPositionChangedEventArgs e) { _maxVideoProgress = e.NewPosition >= _maxVideoProgress ? e.NewPosition : _maxVideoProgress; if (!(sender is MpvPlayer mpvPlayer)) { return; } videoProgressTrackBarControl.BeginInvoke((MethodInvoker) delegate { try { if (mpvPlayer.Remaining == new TimeSpan(0, 0, 0)) { return; } videoCurrentProgressLabelControl.Text = $@"{e.NewPosition.Minutes:D2}:{e.NewPosition.Seconds:D2}"; videoRemainingProgressLabelControl.Text = $@"-{mpvPlayer.Remaining.Minutes:D2}:{mpvPlayer.Remaining.Seconds:D2}"; if (_isVideoUserValueChanging) { return; } _isVideoAutoValueChanging = true; videoProgressTrackBarControl.Value = Convert.ToInt32(e.NewPosition.TotalSeconds); _isVideoAutoValueChanging = false; } catch (MpvAPIException ex) { if (ex.Message == "Error occured: \"property unavailable\".") { //Do nothing as this an error from the user changing the player index faster than MPI Player can keep up } else { throw; } } }); }