private void ExpandResource()

in src/PSRule.Rules.Azure/Pipeline/ResourceDataPipeline.cs [233:261]


    private void ExpandResource(int poolSize)
    {
        var context = new ResourceExportContext(Context, _Resources, TokenCache, _RetryCount, _RetryInterval);
        var visitor = new ResourceExportVisitor();
        var pool = new Task[poolSize];
        for (var i = 0; i < poolSize; i++)
        {
            pool[i] = Task.Run(async () =>
            {
                while (!_Resources.IsEmpty && _Resources.TryDequeue(out var r))
                {
                    context.VerboseExpandingResource(r[PROPERTY_ID].Value<string>());
                    try
                    {
                        await visitor.VisitAsync(context, r);
                        _Output.Enqueue(r);
                    }
                    catch (Exception ex)
                    {
                        context.Error(ex, ERRORID_RESOURCEDATAEXPAND);
                    }
                }
            });
        }
        context.Wait();
        Task.WaitAll(pool);
        context.Flush();
        pool.DisposeAll();
    }