public bool NeedsDownload(string videoId, StorageFile storageFile) { if (UrlCaches.ContainsKey(videoId) && storageFile.Exists()) { var fileName = storageFile.ToString(); var urlCache = UrlCaches[videoId]; if (storageFile.Length >= urlCache.Length) { if (!VideoCaches.ContainsKey(fileName)) { SetFinished(urlCache.VideoId, fileName, false); } else if (VideoCaches[fileName].Finished) { return(false); } } foreach (var item in VideoCaches.Where(p => p.Value.FileName != fileName && p.Value.Finished && File.Exists(p.Value.FileName) && p.Value.VideoId == videoId)) { try { File.Copy(item.Value.FileName, fileName, true); } catch (IOException) { return(true); } SetFinished(urlCache.VideoId, fileName, true); return(false); } } return(true); }
public void SetFinished(string videoId, string fileName, bool finished) { if (VideoCaches.ContainsKey(fileName)) { var item = VideoCaches[fileName]; if (item.VideoId == videoId) { item.Finished = finished; } } else { var videoCache = new VideoCache { VideoId = videoId, FileName = fileName, Finished = finished }; _videoCaches.Add(videoCache); VideoCaches.Add(fileName, videoCache); } }