У меня проблемы с увеличением моего индикатора выполнения.Я хотел бы, чтобы оно увеличивало определенное значение после завершения каждой функции.Все примеры, на которые я смотрел, имеют функции, которые НЕ принимают никаких параметров.Это то, что у меня есть
public partial class TaskProgress: Form
{
public TaskProgress(string parameter, string parameter2, string parameter3)
{
InitializeComponent();
}
private void Form1_Load(object sender, System.EventArgs e)
{
// Start the BackgroundWorker.
backgroundWorker1.WorkerReportsProgress = true;
progressBar1.Value = 0;
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
/*for (int i = 1; i <= 100; i++)
{ Thread.Sleep(100);
backgroundWorker1.ReportProgress(i);}*/
function1(parameter1);
backgroundWorker1.ReportProgress(20);
function2(parameter2);
backgroundWorker1.ReportProgress(60);
function3(parameter3);
backgroundWorker1.ReportProgress(100);
}
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
// Change the value of the ProgressBar to the BackgroundWorker progress.
progressBar1.Value = e.ProgressPercentage;
// Set the text.
this.Text = "Progress: " + e.ProgressPercentage.ToString() + "%";
}
}
Как передать значения параметров в function1, function2 и function3?Способ, которым параметр 1, 2, 3 передается прямо сейчас в функцию 1, 2, 3, неверен, поскольку эти значения не определены в функции фонового работника.Параметры 1,2,3 являются динамическими и передаются при создании класса TaskProgress.
Или есть другой способ увеличить индикатор выполнения на основе конкуренции моих функций?
Я посмотрелв этом примере, но функции внутри backgroundworker_dowork () не нуждаются в дополнительных параметрах Как использовать индикатор выполнения WinForms?
Я не могу вызвать ReportProgress ();вне backgroundWorker1_DoWork из-за следующего кода в моем коде Form.cs [Design]:
//
this.backgroundWorker1.WorkerReportsProgress = true;
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
this.backgroundWorker1.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged);
//
Я также не могу изменить количество аргументов, которые backgroundWorker1_DoWork () принимает
Ранее то, что у меня было
public partial class TaskProgress: Form
{
public TaskProgress(string parameter, string parameter2, string parameter3)
{
InitializeComponent();
function1(parameter1);
function2(parameter2);
function3(parameter3);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 100; i++)
{ Thread.Sleep(100);
backgroundWorker1.ReportProgress(i);}
}
}
Но индикатор выполнения просто сдвинулся сам по себе;независимо от того, когда функции завершены