protected void DoWork(object sender, DoWorkEventArgs e) { BigSqlRunner.Run( (executedUnits, affectedRows) => BgWorker.ReportProgress(-1, new ProgressData(executedUnits, affectedRows)), message => BgWorker.ReportProgress(-1, new ProgressData(message)) ); }
private void BgWorker_DoWork(object sender, DoWorkEventArgs e) { int showProgressEnableCounter = 0; //sync do var task = Task.Factory.StartNew(() => { var updateResult = ServiceClient.UploadFile(this.DestFileName, "", tokenSource.Token); if (!updateResult) { IsSuccess = false; MessageBox.Show($"upload { this.DestFileName} fail"); } //delete client file File.Delete(this.DestFileName); }).ContinueWith(t => BgWorker.CancelAsync()); int k = 0; while (true) { if (BgWorker.CancellationPending) { e.Cancel = true; break; } Interlocked.Increment(ref showProgressEnableCounter); if (k == showProgressEnableCounter / 1000000) { continue; } k = showProgressEnableCounter / 1000000; if (k > 100) { showProgressEnableCounter = 0; } BgWorker.ReportProgress(k); } }