BackgroundWorker reporta o progresso da classe externa?

Eu tenho uma solução de trabalho que relata progresso e texto para uma barra de progresso e um rótulo no formulário principal do aplicativo. Agora mudei meus métodos de trabalho para uma classe para que eles sejam acessíveis em vários formulários, etc.

Dentro dos métodos de trabalho sãoBW.ReportProgress() declarações que empurram o progresso e o texto para o BackgroundWorker no formulário principal.

Para dar uma ideia melhor, aqui está o layout do arquivo:

MainScreen.cs

List repSelected = new List();
XMLandRar xXMLandRar = new XMLandRar();

private void Rarbtn_Click(object sender, EventArgs e)
        {
            GetReps();

            //Run worker
            if (!CreateRarBW.IsBusy)
            {
                CreateRarBW.RunWorkerAsync();
            }
        }

//Worker
private void CreateRarBW_DoWork(object sender, DoWorkEventArgs e)
{
    xXMLandRar.RarFiles(repSelected);
}

//Progress reporting
private void CreateRarBW_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    progBar.Value = e.ProgressPercentage;
    Statuslbl.Text = e.UserState.ToString();
}

Então, minha classe recém-criada, que engloba todos os métodos de trabalho e é empurrar o progresso para o formulário principal.

XMLandRar.cs

public class XMLandRar
{
    public void RarFiles(List repSelected)
    {
        int step = 100 / repSelected.Count();
        int i = 0;
        //Iterate through list and run rar for each
        foreach (string rep in repSelected)
        {
            CreateRarBW.ReportProgress(i, "Raring files for " + rep);
            DirectoryExists(rep);
            ProcessRunner(rep);
            i += step;
            CreateRarBW.ReportProgress(i, "Raring files for " + rep);
        }
    }
}

O problema que estou tendo é que noXMLandRar classe o CreateRarBW não é reconhecido (obviamente) - como posso fazer umReportProgress ligar para o BW na tela principal do aplicativo?

questionAnswers(3)

yourAnswerToTheQuestion