Exemplo n.º 1
0
        private void DisposeObjects()
        {
            logger.Info("");

            dataSynchronizer.Dispose();
            DisposeStreams();
            DisposeAllSubjects();

            logger.Info("Disposing clock sources");
            // data clock uses player clock. Dispose data clock first.
            _dataClock.Dispose();
            _playerClock.Dispose();

            // Shut down player
            logger.Info("Disposing ESPlayer");
            // Don't call Close. Dispose does that. Otherwise exceptions will fly
            player.Dispose();
            if (usesExternalWindow == false)
            {
                WindowUtils.DestroyElmSharpWindow(displayWindow);
            }

            logger.Info("Disposing Tokens");
            // Clean up internal object
            activeTaskCts.Dispose();

            logger.Info("End");
        }
Exemplo n.º 2
0
        public void Dispose()
        {
            if (isDisposed)
            {
                return;
            }

            logger.Info("");

            // disable buffering (if on)
            _suspendResumeLogic.SetBuffering(false);

            TerminateAsyncOperations();
            WaitForAsyncOperationsCompletion();

            logger.Info("Stopping playback");
            try
            {
                player.Stop();
            }
            catch (Exception e)
            {
                if (!(e is InvalidOperationException))
                {
                    logger.Error(e);
                }
                // Ignore. Will be raised if not playing :)
            }

            DisposeAllSubscriptions();
            DetachEventHandlers();
            dataSynchronizer.Dispose();
            DisposeStreams();
            DisposeAllSubjects();

            logger.Info("Disposing clock sources");
            // data clock uses player clock. Dispose data clock first.
            _dataClock.Dispose();
            _playerClock.Dispose();

            // Shut down player
            logger.Info("Disposing ESPlayer");
            // Don't call Close. Dispose does that. Otherwise exceptions will fly
            player.Dispose();
            if (usesExternalWindow == false)
            {
                WindowUtils.DestroyElmSharpWindow(displayWindow);
            }

            logger.Info("Disposing Tokens");
            // Clean up internal object
            activeTaskCts.Dispose();

            isDisposed = true;
        }