में अपडेट किया गया है मेरे पास 2 प्रगतिबार और 1 पृष्ठभूमि कार्यकर्ता के साथ एक साधारण रूप है। मेरे पास 2 लूप हैं (एक दूसरे के भीतर) और मैं एक बार बढ़ने के बाद प्रत्येक लूप की प्रगति की रिपोर्ट करना चाहता हूं।केवल 2 में से 2 प्रगति सलाखों को पृष्ठभूमिवर्कर
private void buttonStart_Click(object sender, EventArgs e)
{
workerCustomers.RunWorkerAsync();
}
private void workerCustomers_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
progressBar2.Value = (int)e.UserState;
}
private void workerCustomers_DoWork(object sender, DoWorkEventArgs e)
{
for (int customer = 0; customer < 50; customer++)
{
int customerPercentage = ++customer * 100/50;
workerCustomers.ReportProgress(customerPercentage, 0);
for (int location = 0; location < 500; location++)
{
int locationPercentage = ++location * 100/500;
workerCustomers.ReportProgress(customerPercentage, locationPercentage);
}
workerCustomers.ReportProgress(customerPercentage, 0);
}
}
जब कार्यक्रम, चलाता है progressbar1 अद्यतन हो जाता है ठीक है, लेकिन progressbar2 कभी नहीं ले जाता है: यहाँ कोड मैं है। अगर मैं इसे डीबगर के माध्यम से चलाता हूं, तो मैं प्रगतिबार 2 के मूल्य को बदल सकता हूं, ग्राफिक रूप से कोई बदलाव नहीं है। कोई विचार?
क्या प्रगति पट्टी का अधिकतम मूल्य ठीक से सेट है? –
@ एलसी।, हां, डिफ़ॉल्ट रूप से, यह 100 पर सेट है लेकिन मैंने इसे दूसरे लूप काउंटर कुल 500 के मिलान के लिए बदल दिया है। – Robert
500 का एक लूप बहुत तेज़ होगा। यह अद्यतन नहीं हो सकता है। एक थ्रेड जोड़ने का प्रयास करें। नींद() को आंतरिक लूप में देखें और देखें कि वास्तव में यह देखने के लिए वास्तव में बहुत तेज़ हो रहा है या नहीं। –