BackgroundWorker raportuje postęp z klasy zewnętrznej?

Mam działające rozwiązanie, które raportuje postęp i tekst na pasku postępu oraz etykietę w głównym formularzu aplikacji. Przeniosłem teraz moje metody robocze do klasy, aby były dostępne w wielu formularzach itp.

W ramach metod pracy sąBW.ReportProgress() instrukcje, które przesuwają postęp i tekst do BackgroundWorker w głównym formularzu.

Aby dać lepszy pomysł, tutaj znajduje się układ plików:

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

Potem moja nowo utworzona klasa, która obejmuje wszystkie metody robotnicze i ma wypchnąć postęp do głównego formularza.

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

Problem, który mam, jest taki, że wXMLandRar klasa CreateRarBW nie jest rozpoznawana (oczywiście) - jak mogę zrobićReportProgress zadzwonić do BW na głównym ekranie aplikacji?

questionAnswers(3)

yourAnswerToTheQuestion