コード例 #1
0
        public static IEnumerableAsync <CloudTable> GetTables(this CloudTableClient tableClient)
        {
            var ranOnce           = false;
            var continuationToken = default(TableContinuationToken);

            return(EnumerableAsync.YieldBatch <CloudTable>(
                       async(yieldReturn, yieldBreak) =>
            {
                if (continuationToken.IsDefaultOrNull())
                {
                    if (ranOnce)
                    {
                        return yieldBreak;
                    }
                }

                ranOnce = true;
                var segment = await tableClient.ListTablesSegmentedAsync(continuationToken);
                continuationToken = segment.ContinuationToken;

                if (!segment.Results.Any())
                {
                    return yieldBreak;
                }
                return yieldReturn(segment.Results.ToArray());
            }));
        }