0
我使用VS 2010製作了Windows窗體應用程序。我已將ProgressBar
添加到我的表單中,並且更改了它的值。但是,ProgressBar
不會前進或更改。我認爲其中一個原因是因爲這個過程太快,但是我做得很慢,也沒有效果。如何讓我的ProgressBar工作?
下面的代碼:
void pn_TenPercentProgressEvent(object sender, PrimeNumberEventArgs e)
{
probarPrimeNumber.Visible = true;
probarPrimeNumber.Value = (int)e.Percent * 100;
this.Refresh();
}
這是事件發生類:
public ulong[] Generate(int count)
{
ulong[] ulngaryResult = new ulong[count];
switch (count)
{
case 0:
{
throw new Exception("The Zero is NOT Permitted.");
}
case 1:
{
ulngaryResult[0] = 2;
break;
}
case 2:
{
ulngaryResult[1] = 3;
goto case 1;
}
default:
{
int intIndex = 0;
double dblPercent = 0.1;
for (ulong i = 2; i < ulong.MaxValue; i++)
{
if (this.IsPrime(i))
{
ulngaryResult[intIndex] = i;
intIndex++;
}
if (intIndex == (int)(dblPercent * count))
{
//Raise TenPercentProgressEvent
if (TenPercentProgressEvent != null) //Optional Event
{
TenPercentProgressEvent((object)this, new PrimeNumberEventArgs(intIndex, count, dblPercent));
}
dblPercent += 0.1;
}
if (intIndex == count)
{
//Raise FinishedProgressEvent
if (FinishedProgressEvent != null) //Optional Event
{
FinishedProgressEvent((object)this, new PrimeNumberEventArgs(intIndex, count, dblPercent));
}
break;
}
}
break;
}
}
return ulngaryResult;
}
您是否正在運行在其自己的線程上具有相應進度的操作? – 2012-02-09 22:57:25
請發佈您的代碼。如果我們看不到你有什麼代碼,我們就無法弄清楚什麼是錯的。 – ChrisF 2012-02-09 22:57:48
你在UI線程中運行代碼嗎?雖然UI線程繁忙,但如果沒有'Application.DoEvents()'(可怕的想法),它將無法更新。無論如何,請發佈您的代碼。 – Ryan 2012-02-09 23:01:00