private CancellationTokenSource _cancellationTokenSource;
private async void ExportAsync(PageReport report, IRenderingExtension renderingExtension, FileStreamProvider outputProvider, NameValueCollection settings)
{
_cancellationTokenSource = new CancellationTokenSource();
cancelButton.Text = "Cancel";
await Task.Run(() =>
{
try
{
report.Document.Render(renderingExtension, outputProvider, settings, false, false, _cancellationTokenSource.Token);
}
catch (OperationCanceledException)
{
}
});
if (_cancellationTokenSource.IsCancellationRequested)
MessageBox.Show("Export was cancelled", "Export", MessageBoxButtons.OK, MessageBoxIcon.Information);
_cancellationTokenSource.Dispose();
}
private void cancelExport(object sender, EventArgs e)
{
_cancellationTokenSource?.Cancel();
}