Пример #1
0
        public DownloadController(DownloadListModel model, SettingsPropertyChangeController sc)
        {
            _Model = model ?? throw (new ArgumentNullException(nameof(model)));

            _SettingsController = sc ?? throw (new ArgumentNullException(nameof(sc)));
            _SettingsController.SettingsPropertyChanged += SettingsController_PropertyChanged;

            _Dict = new ConcurrentDictionary <DownloadRow, tuple>();

            _CrossDownloadInstanceRestriction = new cross_download_instance_restriction(_SettingsController.MaxCrossDownloadInstance);
            _DownloadThreadsSemaphoreFactory  = new download_threads_semaphore_factory(_SettingsController.UseCrossDownloadInstanceParallelism,
                                                                                       _SettingsController.MaxDegreeOfParallelism);

            _DefaultConnectionLimitSaver = DefaultConnectionLimitSaver.Create(_SettingsController.MaxDegreeOfParallelism);
        }
Пример #2
0
        public void Dispose()
        {
            m3u8_client_factory.ForceClearAndDisposeAll();

            _DefaultConnectionLimitSaver.Dispose();

            if (_DownloadThreadsSemaphoreFactory != null)
            {
                _DownloadThreadsSemaphoreFactory.Dispose();
                _DownloadThreadsSemaphoreFactory = null;
            }
            if (_SettingsController != null)
            {
                _SettingsController.SettingsPropertyChanged -= SettingsController_PropertyChanged;
                _SettingsController = null;
            }
        }