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??
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??
Najprościej używając BackgroundWorkera.
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.....
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
.