Jak korzystać z paska postępu WinForms?

Chcę pokazać postęp obliczeń wykonywanych w zewnętrznej bibliotece.

Na przykład, jeśli mam jakąś metodę obliczania i chcę użyć jej do 100000 wartości w mojej klasie Form, mogę napisać:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }            

    private void Caluculate(int i)
    {
        double pow = Math.Pow(i, i);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        progressBar1.Maximum = 100000;
        progressBar1.Step = 1;

        for(int j = 0; j < 100000; j++)
        {
            Caluculate(j);
            progressBar1.PerformStep();
        }
    }
}

Powinienem wykonać krok po każdym obliczeniu. Ale co jeśli wykonam wszystkie 100000 obliczeń w metodzie zewnętrznej. Kiedy należy „wykonać krok”, jeśli nie chcę uzależniać tej metody od paska postępu? Mogę na przykład pisać

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void CaluculateAll(System.Windows.Forms.ProgressBar progressBar)
    {
        progressBar.Maximum = 100000;
        progressBar.Step = 1;

        for(int j = 0; j < 100000; j++)
        {
            double pow = Math.Pow(j, j); //Calculation
            progressBar.PerformStep();
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        CaluculateAll(progressBar1);
    }
}

ale nie chcę tego robić.

questionAnswers(3)

yourAnswerToTheQuestion