// new using System.ComponentModel; using System.Threading; private void Window_Loaded(object sender, RoutedEventArgs e) { int n = 100; progressbar.Minimum = 0; progressbar.Maximum = n; worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.ProgressChanged += worker_ProgressChanged; worker.DoWork += dotheWork; // the run-method worker.RunWorkerAsync(); } private BackgroundWorker worker = null; // Wichtig, diese Methode wird nach jeder Änderung aufgerufen. // Die Abfrage "istEnde" dient als EndeAktion void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressbar.Value = e.ProgressPercentage; if (e.ProgressPercentage == progressbar.Maximum) { progressbar.Value = 0; Message("Finish", "Do some studid work, Extrakaese-Pizza"); } else { labelProgress.Content = "Progress: " + (progressbar.Value * 100.0 / progressbar.Maximum).ToString("0.0") + " %"; } } public void Message(String text, String title) { MessageBox.Show(text, title, MessageBoxButton.OK, MessageBoxImage.Information); } // setValue(i); public void dotheWork(object sender, DoWorkEventArgs e) { int n = 0; for (int i = 0; i < 100; i++) { // working Thread.Sleep(300); worker.ReportProgress(++n); Thread.Sleep(5); } }