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); }
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; } }