- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是有问题的代码
public async static Task<MemoryStream> AsyncReadBlob(string identifier)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
MemoryStream memstream = new MemoryStream();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(identifier);
await blockBlob.DownloadToStreamAsync(memstream);
return memstream;
}
基本上,如果我替换代码,代码运行完全正常
等待 blockBlob.DownloadToStreamAsync(memstream)
与
blockblob.DownloadToStream(memstream)
或
blockblob.DownloadToStreamAsync(memstream).wait()
但是当我将其设为异步时,“下载到流”步骤永远不会完成。我也尝试过使用 DownloadToStreamBegin() 然后等待它也完成,但它再也没有完成。
它不起作用是因为它是一个静态方法吗?还是因为它的 memstream 正在从内存或其他东西中取消引用??
我使用的是 asp.net 4.5,所有编译都正确,没有解释器错误或异常抛出。
任何帮助将不胜感激
最佳答案
简短版本...使用:
await blockBlob.DownloadToStreamAsync(memstream).ConfigureAwait(false);
长版:
当您在 C# 中等待任务时,任务调度程序将尝试在调用原始等待的同一线程中执行等待之后的代码块。
问题是在某些情况下(现在不记得具体情况)ASP.NET 线程调度程序会在等待任务返回时阻塞线程。当任务返回时,任务阻塞等待原线程释放,而线程阻塞等待任务结束。所以你结束了僵局。
ConfigureAwait允许您停用该行为。
关于c# - Azure downloadtostreamasync 方法挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526249/
我正在尝试从 Azure 上的 Blob 帐户以字节数组的形式下载 Blob 文件。我就是这么做的。 var blockBlob = blobContainer.GetBlockBlobRefere
我正在尝试从 Azure 上的 Blob 帐户以字节数组的形式下载 Blob 文件。我就是这么做的。 var blockBlob = blobContainer.GetBlockBlobRefere
这是有问题的代码 public async static Task AsyncReadBlob(string identifier) { CloudStorageAcc
我有一堆文件(大约 10k)需要从 Windows Azure 存储下载。为了让它们并行下载而不是一次下载一个,我使用了 blob DownloadToStreamAsync 方法,该方法返回一个 T
我正在尝试使用 DownloadToStreamAsync() 方法从 Azure 存储下载 blob。 using (MemoryStream writeStream = new MemorySt
我在 Microsoft.WindowsAzure.Storage v9.3.3 方面遇到了问题和 Microsoft.Azure.Storage.Blob v11.1.0 NuGet 库。特别是下载
看看下面的代码,我对为了确保库正确下载文件而需要编写的样板代码数量感到惊讶。 是否有任何原因导致我看到 0kb 下载的流,或者这只是编写这样的方法的正常现象? public static async
我是一名优秀的程序员,十分优秀!