Exemplo n.º 1
0
        private void TryDisposePlayer()
        {
            if (_player != null)
            {
                try
                {
                    _videoLayer.RemoveObserver(this, new NSString("videoRect"), _videoLayer.Handle);
                    _videoLayer.RemoveFromSuperLayer();

                    _player.CurrentItem?.RemoveObserver(this, new NSString("loadedTimeRanges"), _player.Handle);
                    _player.CurrentItem?.RemoveObserver(this, new NSString("status"), _player.Handle);
                    _player.CurrentItem?.RemoveObserver(this, new NSString("duration"), _player.Handle);
                    _player.RemoveObserver(this, new NSString("rate"), RateObservationContext.Handle);
                    _player.RemoveTimeObserver(_periodicTimeObserverObject);
                    _player.RemoveAllItems();
                }
                finally
                {
                    _itemFailedToPlayToEndTimeNotification?.Dispose();
                    _playbackStalledNotification?.Dispose();
                    _didPlayToEndTimeNotification?.Dispose();

                    _videoLayer?.Dispose();

                    _player?.CurrentItem?.Dispose();
                    _player?.Dispose();
                    _player = null;
                }
            }
        }