使用 .NET Core 2.2 从 Azure 存储获取所有 Blob

Svi*_*ica 7 .net c# azure asp.net-core

关于从 Azure 存储(或更准确地说从容器)获取 blob 列表的非常简单的问题

由于我使用的是.NET Core 2.2,并且 C# 7.3 版本中不允许使用异步流:

 await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
    {
        Console.WriteLine("\t" + blobItem.Name);
    }
Run Code Online (Sandbox Code Playgroud)

所以我尝试了类似的东西,但没有任何运气(在黑暗中刺伤)

List<BlobItem> items = new List<BlobItem>();
Task.Factory.StartNew(async () => items.Add(await containerClient.GetBlobsAsync()));
Run Code Online (Sandbox Code Playgroud)

所以我想知道 C# v7.3 中等待 foreach 语法的替代方案是什么

谢谢

dev*_*ull 11

返回AsyncPageable<T>的 byGetBlobsAsync()暴露了一个IAsyncEnumerator<T>,您可以使用它来使用简单的while循环进行迭代:

Azure.AsyncPageable<Azure.Storage.Blobs.Models.BlobItem> blobs = containerClient.GetBlobsAsync();
IAsyncEnumerator<Azure.Storage.Blobs.Models.BlobItem> enumerator = blobs.GetAsyncEnumerator();
try
{
    while (await enumerator.MoveNextAsync())
    {
        Azure.Storage.Blobs.Models.BlobItem blob = enumerator.Current;
        // use blob
    }
}
finally
{
    await enumerator.DisposeAsync();
}
Run Code Online (Sandbox Code Playgroud)