using System.Threading; BackgroundWorker bw = new BackgroundWorker(); private void btnStartWorker_Click(object sender, EventArgs e) { if (!bw.IsBusy) { bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(worker_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); bw.RunWorkerAsync(); btnStartWorker.Text = "Abbruch"; this.Cursor = Cursors.Wait; } else { bw.CancelAsync(); } } private void worker_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i < 10000; i++) { if (bw.CancellationPending) { e.Cancel = true; return; } // irgendwas rechnen int iPc = (int)(((double)i / 10000.0) * 100); // Fortschrittswert melden bw.ReportProgress(iPc); // BackgroundWorker schlafen schicken Thread.Sleep(100); } } private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) { this.BeginInvoke((MethodInvoker)delegate { pbProgressBar.Value = e.ProgressPercentage; }); } private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // hier Dinge erledigen, die auftreten, wenn Backgroundworker fertig ist this.Cursor = Cursors.Arrow; if (e.Cancelled) { btnStartWorker.Text = "Start"; } if (e.Error != null) { MessageBox.Show(e.Error.Message); } }
Kategorien
-
Neueste Beiträge
- [ABAP] DMS: Infos zu Dokumenteninfosätzen lesen
- [ABAP] Prüfen, ob ein bestimmer Festwert in einer Domäne vorhanden ist
- [SAP] Drucker für Benutzer festlegen
- [SAP Fiori] Fiori Launchpad erweitern, Systeminformationen im Launchpad anzeigen
- [SAP Gateway] ODATA V4 Service für anonymen Zugriff einrichten
- [ABAP] Varianten eines Reports lesen
- Warum Krebspatienten so viel Gewicht verlieren
- [SAP Fiori] ABAP RESTful Application Programming Model (RAP)
- [SAP] Events und Typkoppelungen
- [SAP Gateway] Daten versenden über einen eventbasierten Aufruf einer OData-Funktion