Beispiel #1
0
        private void QueueOfflineTask(PlaylistItem playlistItem, Uri uri, OfflineTaskType taskType)
        {
            var task = new OfflineTask(playlistItem, taskType, uri);

            _pendingOfflineTasks[playlistItem].Add(task);
            AddRequest(task);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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 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 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);
        }