public async Task DeleteRecordingAsync(string recordingId, CancellationToken cancellationToken) { var remove = _recordingProvider.GetAll().FirstOrDefault(i => string.Equals(i.Id, recordingId, StringComparison.OrdinalIgnoreCase)); if (remove != null) { if (!string.IsNullOrWhiteSpace(remove.TimerId)) { var enableDelay = _activeRecordings.ContainsKey(remove.TimerId); CancelTimerInternal(remove.TimerId); if (enableDelay) { // A hack yes, but need to make sure the file is closed before attempting to delete it await Task.Delay(3000, cancellationToken).ConfigureAwait(false); } } try { File.Delete(remove.Path); } catch (DirectoryNotFoundException) { } catch (FileNotFoundException) { } _recordingProvider.Delete(remove); } }
public Task CancelSeriesTimerAsync(string timerId, CancellationToken cancellationToken) { var timers = _timerProvider.GetAll().Where(i => string.Equals(i.SeriesTimerId, timerId, StringComparison.OrdinalIgnoreCase)); foreach (var timer in timers) { CancelTimerInternal(timer.Id); } var remove = _seriesTimerProvider.GetAll().FirstOrDefault(r => string.Equals(r.Id, timerId, StringComparison.OrdinalIgnoreCase)); if (remove != null) { _seriesTimerProvider.Delete(remove); } return(Task.FromResult(true)); }