public IStorageTransferTask DownloadFile(string destinationPath) { var wrapper = new StorageTransferTaskWrapper <StorageDownloadTask, NSUrl>(); wrapper.TransferTask = _wrapped.WriteToFile(NSUrl.FromFilename(destinationPath), (x, e) => wrapper.CompletionHandler(x, e)); return(wrapper); }
public Task GetFileAsync(string filePath, IProgress <IDownloadState> progress = null, CancellationToken cancellationToken = default(CancellationToken)) { if (filePath == null) { throw new ArgumentNullException(nameof(filePath)); } var url = NSUrl.FromFilename(filePath); var tcs = new TaskCompletionSource <bool>(); var downloadTask = _storageReference.WriteToFile(url, (data, error) => { if (error != null) { tcs.SetException(ExceptionMapper.Map(new NSErrorException(error))); } else { tcs.SetResult(true); } }); if (progress != null) { downloadTask.ObserveStatus(StorageTaskStatus.Progress, snapshot => progress.Report(new StorageTaskSnapshotWrapper(snapshot))); } if (cancellationToken != default(CancellationToken)) { cancellationToken.Register(downloadTask.Cancel); } return(tcs.Task); }