私はVS 2010でWindowsフォームアプリケーションを作成しています。ProgressBar
をフォームに追加しました。その値を変更します。ただし、ProgressBar
は前進または変更されません。私はその理由の1つがプロセスが速すぎるためだと思うが、私はそれを遅くしてしまい、どちらもうまくいかなかった。ここでどのように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;
}
対応する進捗状況の操作は、独自のスレッドで実行していますか? –
コードを投稿してください。あなたが持っているコードがわからないと、何が間違っているのか分かりません。 – ChrisF
UIスレッドでコードを実行していますか? UIスレッドはビジー状態で、 'Application.DoEvents()'(ひどい考え方)がなければ更新できません。とにかく、あなたのコードを投稿してください。 – Ryan