private delegate void UpdateUIDelegate(int i, int max, string fo, ulong number);

 

private void UpdateUI(int i, int max, string fo, ulong number)

{

    if (this.list.InvokeRequired)

    {

        this.list.Invoke(new UpdateUIDelegate(UpdateUI), i, max, fo, number);

    }

    else

    {

        // Report the progress; calculating with decimal point

        this.progress.Value = (int)((i + 1f) * 100 / max);

 

        if (i == 0) this.list.Items.Clear();

 

        ListViewItem lvi;

 

        lvi = this.list.Items.Add(fo);

        lvi.SubItems.Add(number.ToString());

    }

}