BackgroundWorker-Bericht Fortschritt von externer Klasse?

Ich habe eine funktionierende Lösung, die den Fortschritt und den Text in einer Fortschrittsanzeige und einem Etikett auf dem Hauptformular der Anwendung anzeigt. Ich habe meine Worker-Methoden jetzt in eine Klasse verschoben, damit sie über mehrere Formulare usw. zugänglich sind.

Innerhalb der Arbeitermethoden sindBW.ReportProgress() Anweisungen, die den Fortschritt und den Text im Hauptformular an den BackgroundWorker zurückgeben.

Um hier eine bessere Vorstellung zu geben, ist das Dateilayout:

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

Dann meine neu erstellte Klasse, die alle Worker-Methoden umfasst und den Fortschritt auf das Hauptformular schieben soll.

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

Das Problem, das ich habe, ist das in derXMLandRar klasse die CreateRarBW wird (offensichtlich) nicht erkannt - wie kann ich eine machenReportProgress Rufen Sie das BW im Hauptbildschirm der Anwendung auf?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage