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. }
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(); } } }