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
позвонить в чб на главном экране приложения?