BackgroundWorker сообщает о прогрессе из внешнего класса?

У меня есть рабочее решение, которое сообщает о прогрессе & amp; текст в индикатор выполнения и метку в главной форме приложения. Теперь я переместил свои рабочие методы в класс, чтобы они были доступны в нескольких формах и т. Д.

Внутри рабочего методыBW.ReportProgress() операторы, которые возвращают ход и текст к BackgroundWorker в основной форме.

Чтобы дать лучшую идею вот макет файла:

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

Затем мой недавно созданный класс, который охватывает все рабочие методы и должен продвигать прогресс в основную форму.

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

У меня проблема в том, что вXMLandRar класс CreateRarBW не распознается (очевидно) - как я могу сделатьReportProgress позвонить в чб на главном экране приложения?

Ответы на вопрос(3)

Ваш ответ на вопрос