Synchronizacja Metody z ProgressBar'em

0

Witam

Mam problem może i banalny dla nie których ale ja dopiero zaczynam moją przygodę z wątkami.
Interesuje mnie jak synchronizować wykonanie funkcji z progressBar'em??

0

Najprościej używając BackgroundWorkera.

0
 
        private void buttonStart_Click(object sender, RoutedEventArgs e)
        {
            if (bw.IsBusy != true)
            {
                bw.RunWorkerAsync();
            }
        }
        private void buttonCancel_Click(object sender, RoutedEventArgs e)
        {
            if (bw.WorkerSupportsCancellation == true)
            {
                bw.CancelAsync();
            }
        }
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            if ((worker.CancellationPending == true))
            {
                    e.Cancel = true;
                    break;
            }
            else
            {
                     xxx(); // Tu daje przykładową funkcję 
                    System.Threading.Thread.Sleep(500);
            }

        }
        private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if ((e.Cancelled == true))
            {
                this.tbProgress.Text = "Canceled!";
            }

            else if (!(e.Error == null))
            {
                this.tbProgress.Text = ("Error: " + e.Error.Message);
            }

            else
            {
                this.tbProgress.Text = "Done!";
            }
        }
        private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            this.progressbar.Value = e.ProgressPercentage;
        }
    }

i co dalej ??

funkcja się wykonuje a progressbar stoi w miejscu.....

0

Zapomniałeś jeszcze o wywołaniu metody ReportProgress w zdarzeniu DoWork: http://msdn.microsoft.com/en-us/library/ka89zff4.aspx

PS Nie trzeba dawać break w if.

1 użytkowników online, w tym zalogowanych: 0, gości: 1