private void worker_DoWork(object sender, DoWorkEventArgs e)
{
List<ulong> numbers = new List<ulong>();
// Calculate the first 90 numbers
int max = 90;
for (int i = 0; i < max; i++)
{
// Every Fibonacci number equals the sum of the previous two Fibonacci numbers
// Special cases: F(0) = 0 and F(1) = 1
// F(x) is undefined where x < 0
ulong number = 0;
if (i == 0)
number = 0;
else if (i == 1)
number = 1;
else
number = numbers[i - 1] + numbers[i - 2];
numbers.Add(number);
// Slow down the task by 50 ms each interation
System.Threading.Thread.Sleep(50);
// Report the progress; calculating with decimal point
this.progress.Value = (int)((i + 1f) / max);
if (i == 0) this.list.Items.Clear();
ListViewItem lvi;
lvi = this.list.Items.Add("F(" + i + ")");
lvi.SubItems.Add(number.ToString());
}
}