/// <summary>
        /// DownloadToStreamAsync
        /// </summary>
        /// <param name="blob"></param>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static async Task DownloadToStreamAsync(this ICloudBlob blob, Stream stream)
        {
            var retVal = blob.BeginDownloadToStream(stream, null, null);
            IAsyncResult arRetVal = retVal as IAsyncResult;

            await Task.Factory.FromAsync(arRetVal, (r) => { blob.EndDownloadToStream(r); });

            stream.Seek(0, 0);
        }
Пример #2
0
 public static async Task<string> DownloadToString(this CloudBlockBlob blob)
 {
     using (var strm = new MemoryStream())
     {
         await
             Task.Factory.FromAsync((cb, state) => blob.BeginDownloadToStream(strm, cb, state),
                                    ar => blob.EndDownloadToStream(ar), 
                                    state: null);
         await strm.FlushAsync();
         strm.Seek(0, SeekOrigin.Begin);
         return await new StreamReader(strm).ReadToEndAsync();
     }
 }
Пример #3
0
        /// <summary>
        ///     Downloads the contents of a blob to a stream asynchronously.
        /// </summary>
        /// <param name="cloudBlob">Cloud blob client.</param>
        /// <param name="target">The target stream.</param>
        /// <param name="accessCondition">
        ///     An <see cref="T:Microsoft.WindowsAzure.Storage.AccessCondition" /> object that represents the access conditions for the blob.
        /// </param>
        /// <param name="cancellationToken">Cancellation token.</param>
        public static Task DownloadToStreamAsync(
            this ICloudBlob cloudBlob,
            Stream target,
            AccessCondition accessCondition = null,
            CancellationToken cancellationToken = default (CancellationToken))
        {
            ICancellableAsyncResult asyncResult = cloudBlob.BeginDownloadToStream(target, accessCondition, null, null, null, null);
            CancellationTokenRegistration registration = cancellationToken.Register(p => asyncResult.Cancel(), null);

            return Task.Factory.FromAsync(
                asyncResult,
                result =>
                    {
                        registration.Dispose();
                        cloudBlob.EndDownloadToStream(result);
                    });
        }