private void TriggerBgWorkerForQuery(SimpleExportQuery query) { dataGridView1.DataSource = bindingSource1; progressBar1.Visible = true; BackgroundWorker backgroundWorker = new BackgroundWorker { WorkerSupportsCancellation = true, WorkerReportsProgress = true }; progressBar1.Visible = true; backgroundWorker.DoWork += (o, args) => { SimpleExportQuery report = args.Argument as SimpleExportQuery; args.Result = report?.DoQuery(); }; backgroundWorker.RunWorkerCompleted += (o, args) => { DataTable workerResult = (DataTable)args.Result; bindingSource1.DataSource = workerResult; dataGridView1.Visible = true; progressBar1.Visible = false; }; backgroundWorker.RunWorkerAsync(query); }