Rendering a large report on a background thread keeps the UI responsive and lets you report progress as pages are built.

Render off the UI thread. Do the work inside a BackgroundWorker, subscribing to the engine's progress event:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    report.Load(stream);
    report.IsRendered = false;
    report.Compile();
    report.CompiledReport.Rendering += CompiledReport_Rendering;
    report.Render(false);
}

private void CompiledReport_Rendering(object sender, EventArgs e)
{
    button1.Invoke((EventHandler)delegate { button1.Text = report.StatusString; });
}

How it works. Because rendering runs on the worker, the form stays interactive and the button text reflects live progress until the report is shown.
На скриншоте ниже Вы можете увидеть результат выполнения данного кода:

Rendering a Report in the Thread