C # List Blob Каталог содержимого с генератором - PullRequest
0 голосов
/ 30 августа 2018

Я работаю с хранилищем BLOB-объектов Azure и хочу создать метод для перечисления всех BLOB-объектов в каталоге. Я могу перечислить все элементы каталога следующим образом:

CloudBlobDirectory dir;
BlobContinuationToken token = null;
List<IListBlobItem> elements = new List<IListBlobItem>();
do
{
    BlobResultSegment results = await dir.ListBlobsSegmentedAsync(token);
    token = results.ContinuationToken;
    elements.AddRange(results.Results)
} while (token != null);

Но у меня возникают проблемы, если я пытаюсь составить список всего содержимого с помощью генератора. Если я хочу использовать yield return, то тип возвращаемого значения должен быть IEnumerable<Task<IListBlobItem>>, а затем метод не может быть async, и я не могу использовать await.

public IEnumerable<Task<IListBlobItem>> ListDirectoryContents(CloudBlobDirectory dir)
{
    BlobContinuationToken token = null;
    List<IListBlobItem> elements = new List<IListBlobItem>();
    do
    {
        Task<BlobResultSegment> results = dir.ListBlobsSegmentedAsync(token);
        ???
    } while (token != null);
}

В не асинхронном методе, как мне обновить токен продолжения и yield return каждый из IListBlobItem s?

...