Моя программа (в C # с использованием Windows Forms) читает и анализирует большие объемы данных, и я использую Backgroundworker, который вызывает эти глобальные методы (чтение и анализ).Я хотел бы, чтобы пользователь был в курсе того, сколько времени это займет, так что Backgroundworker должен отображать, какое действие он выполняет, и имеет индикатор выполнения, который должен заполнять также каждое отдельное действие.
К сожалению, яя не могу заставить его работать, так как индикатор выполнения просто не обновляется и остается пустым.
Вот что у меня есть:
private void InitializeBackgroundWorker()
{
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
}
private void buttonParse_Click(object sender, EventArgs e)
{
DescriptionLabel.Visible = true;
progressBar1.Visible = true;
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
Methods.ParsePerfusionData(backgroundWorker1); //Also tried using 'worker' here, but didnt work either
}
И в методеэто выглядит так:
public static void ParsePerfusionData(BackgroundWorker worker)
{
for (int i = 2; i < Globals.DataList.Count; i++)
{
worker.ReportProgress(i / amount * 100);
rest of the code etc.
}
}
Могу ли я не использовать фонового работника в таком глобальном методе?Заранее спасибо!