private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bgWorker = (BackgroundWorker)sender; for (int i=0; i<10000; i++) { bgWorker.ReportProgress(i); } } private void BackgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { //ProgressBar1の値を変更する progressBar1.Value = e.ProgressPercentage; label1.Text = e.ProgressPercentage.ToString(); }
これを動かすとプログレスバーが2周してしまうのですがなぜなんでしょうか?
label1.Text = e.ProgressPercentage.ToString();の部分を消すと1周で終わってくれます。
あと、Doworkのなかでlabel1.Textを変更しようとするとエラーが出て、
ProgressChangedの中でlabel1.Textが変更できるのは、DoWorkがサブスレッドでProgressChangedがメインスレッドという認識であっていますか?
教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/05 15:42
2015/12/05 16:01
2015/12/05 16:06
2015/12/05 16:07
2015/12/05 16:11
2015/12/05 16:16
2015/12/05 16:23
2015/12/05 16:28
2015/12/05 16:28
2015/12/05 16:29
2015/12/05 16:30