public async Task CancelCacheRequest(NicoVideoQuality?quality = null) { if (quality.HasValue) { var divided = GetDividedQualityNicoVideo(quality.Value); await divided.DeleteCache(); } else { foreach (var divided in GetAllQuality()) { await divided.DeleteCache(); } } // 全てのキャッシュリクエストが取り消されていた場合 // 動画情報とコメント情報をDBから削除する if (GetAllQuality().All(x => !x.IsCacheRequested)) { var info = await VideoInfoDb.GetEnsureNicoVideoInfoAsync(RawVideoId); if (!info.IsDeleted) { await VideoInfoDb.RemoveAsync(info); } CommentDb.Remove(RawVideoId); _NiconicoMediaManager.VideoCacheStateChanged -= _NiconicoMediaManager_VideoCacheStateChanged; } }