Я работаю с хранилищем 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?