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());

    }

}