private void QueueOfflineTask(PlaylistItem playlistItem, Uri uri, OfflineTaskType taskType) { var task = new OfflineTask(playlistItem, taskType, uri); _pendingOfflineTasks[playlistItem].Add(task); AddRequest(task); }
private void BeginDownloadFile(OfflineTask task) { if (task.Type != OfflineTaskType.DownloadFile) { throw new ArgumentException("task"); } var webClient = new WebClient(); task.DownloadWebClient = webClient; webClient.DownloadProgressChanged += WebClient_DownloadProgressChanged; webClient.OpenReadCompleted += WebClient_OpenReadCompleted; webClient.OpenReadAsync(task.ResourceLocation, task); }
private void DequeueOfflineTask(OfflineTask offlineTask) { lock (_pendingOfflineTasks) { if (_pendingOfflineTasks.ContainsKey(offlineTask.PlaylistItem)) { var remainingPlaylistItemTasks = _pendingOfflineTasks[offlineTask.PlaylistItem]; remainingPlaylistItemTasks.Remove(offlineTask); if (remainingPlaylistItemTasks.Count == 0) { _pendingOfflineTasks.Remove(offlineTask.PlaylistItem); TakePlaylistItemOfflineCompleted.IfNotNull(i => i(this, offlineTask.PlaylistItem)); } } } NotifyRequestSuccessful(offlineTask); }
private void BeginDownloadFile(OfflineTask task) { if(task.Type != OfflineTaskType.DownloadFile) throw new ArgumentException("task"); var webClient = new WebClient(); task.DownloadWebClient = webClient; webClient.DownloadProgressChanged += WebClient_DownloadProgressChanged; webClient.OpenReadCompleted += WebClient_OpenReadCompleted; webClient.OpenReadAsync(task.ResourceLocation, task); }