private void BeginDownload()
        {
            using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (storage.FileExists("/shared/transfers/channel9.mp3"))
                {
                    storage.DeleteFile("/shared/transfers/channel9.mp3");
                }
            }

            _request = new BackgroundTransferRequest(
                new Uri("http://media.ch9.ms/ch9/7e13/ce6ea97c-e233-4e7c-a74d-ee1c81e37e13/WP8JumpStart04.mp3",
                        UriKind.Absolute),
                new Uri("/shared/transfers/channel9.mp3", UriKind.Relative))
            {
                Tag = "Channel9Download", TransferPreferences = TransferPreferences.AllowBattery
            };
            _monitor             = new TransferMonitor(_request);
            Control1.DataContext = _monitor;

            _monitor.RequestStart(); //This adds request to the BackgroundTransferService queue.
        }
Esempio n. 2
0
 private void StartDownload(BackgroundTransferRequest request)
 {
     if (request.TransferStatus == TransferStatus.Completed)
     {
         OnCompletion(request);
     }
     else if (request.TransferStatus == TransferStatus.Unknown)
     {
         OnFailure(request);
     }
     else
     {
         Monitor           = new TransferMonitor(request);
         Monitor.Complete += (_, args) => { OnCompletion(request); };
         Monitor.Failed   += (_, args) =>
         {
             OnFailure(request);
             if (args.Request.StatusCode == 206 && args.Request.TotalBytesToReceive > 100000000 && args.Request.TransferPreferences == TransferPreferences.AllowCellularAndBattery)
             {
                 var newRequest = new BackgroundTransferRequest(args.Request.RequestUri, args.Request.DownloadLocation)
                 {
                     Tag = args.Request.Tag,
                     TransferPreferences = TransferPreferences.None,
                 };
                 StartDownload(newRequest);
             }
         };
         if (request.TransferStatus == TransferStatus.None)
         {
             IsolatedStorage.WriteAllText(GetBaseFilename() + CourseTopicNameSuffix, CourseTopicName);
             IsolatedStorage.WriteAllText(GetBaseFilename() + LectureTitleSuffix, LectureTitle);
             IsolatedStorage.WriteAllText(GetBaseFilename() + IndexSuffix, Index.ToString());
             Monitor.RequestStart();
         }
     }
 }