Render multiple SSRS reports in parallel
Here's pure async example without any workarounds.
private async Task ProcessReport(Report report, ConcurrentDictionary&lt;int, string&gt; reportDictionary)
{
    var (reportPath, bindingOrder, reportParameters) = report;
    
    var exportedImage = await _exporter.Export(_reportServerUrl, reportPath, export, reportParameters);

    if (exportedImage == null)
    {
        throw new InvalidOperationException($&quot;Could not render report {reportIdentifier} with binding order {bindingOrder}.&quot;);
    }

    reportDictionary.GetOrAdd(bindingOrder, exportedImage);
}

var reportDictionary = new ConcurrentDictionary&lt;int, string&gt;();

List&lt;Task&gt; tasks = new List&lt;Task&gt;();
foreach (var report in request.Reports)
{
    tasks.Add(ProcessReport(report, reportDictionary));
}
await Task.WhenAll(tasks);