Я пытаюсь загрузить Azure BLOB-объект в локальный файл, используя метод DownloadToFIleParallelAsync, чтобы сократить время, необходимое для загрузки. Но выполнение моей программы продолжается, когда выполняется эта строка. Никаких операторов после этой строки не выполняется. Вот код, который я написал.
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
namespace demoAzure {
class Program
{
static void Main(string[] args)
{
var watch = System.Diagnostics.Stopwatch.StartNew(); Console.WriteLine("Downloading..."); ProcessBlob().GetAwaiter().GetResult();
watch.Stop();
Console.WriteLine( "Execution Time: " + watch.ElapsedMilliseconds + " Milliseconds");
Console.ReadLine();
}
private static async Task ProcessBlob()
{
string storageconnectionstring = Environment.GetEnvironmentVariable("storageconnectionstring"); CloudStorageAccount storageAccount = null;
CloudBlobContainer container = null;
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string blobName = "large rfa_15mb.RFA";
string downloadFilePath = Path.Combine(folderPath, blobName);
if (CloudStorageAccount.TryParse(storageconnectionstring, out storageAccount)) {
try
{
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); container = blobClient.GetContainerReference("blobcontainer"); await container.CreateIfNotExistsAsync();
CloudBlockBlob blob = container.GetBlockBlobReference(blobName); //await blob.DownloadToFileAsync(downloadFilePath, FileMode.Create);
await blob.DownloadToFileParallelAsync(downloadFilePath, FileMode.Create, 2, 4 * 1024 * 1024);
// blob.DownloadToFile(downloadFilePath, FileMode.Create); Console.WriteLine("completed");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
else
{
Console.WriteLine("No system environment variables are available. please set one");
}
}
} }