BackgroundWorker 编译错误
Compile Error With BackgroundWorker
我想向我的 DoWork
方法传递一个额外的参数,但我收到 No overload for 'backgroundWorker1_DoWork' matches delegate 'System.ComponentModel.DoWorkEventHandler'
的编译错误
这是我的语法,我应该怎么做才能解决这个问题?
namespace Testing
{
public partial class Form1 : Form1
{
public static string[] employeeName;
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1WorkerSupportsCancellation = true;
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
}
private void btn1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(employeeName);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e, string[] employeeName)
{
//Just for example sake
for (int q = employeeName.GetLowerBound(0); q <= employeeName.GetUpperBound(0); q++)
{
MessageBox.Show(employeeName[q];
}
}
}
}
DoWorkEventHandler 具有以下定义:
public delegate void DoWorkEventHandler(
Object sender,
DoWorkEventArgs e
)
您不能添加第三个参数。你要获取的对象在DoWorkEventArgs.Argument
属性.
public partial class Form1 : Form1
{
public static string[] employeeName;
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1WorkerSupportsCancellation = true;
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
}
private void btn1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(employeeName);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
string[] employeeName = (string[])e.Argument;
//Just for example sake
for (int q = employeeName.GetLowerBound(0); q <= employeeName.GetUpperBound(0); q++)
{
MessageBox.Show(employeeName[q];
}
}
}
我想向我的 DoWork
方法传递一个额外的参数,但我收到 No overload for 'backgroundWorker1_DoWork' matches delegate 'System.ComponentModel.DoWorkEventHandler'
这是我的语法,我应该怎么做才能解决这个问题?
namespace Testing
{
public partial class Form1 : Form1
{
public static string[] employeeName;
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1WorkerSupportsCancellation = true;
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
}
private void btn1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(employeeName);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e, string[] employeeName)
{
//Just for example sake
for (int q = employeeName.GetLowerBound(0); q <= employeeName.GetUpperBound(0); q++)
{
MessageBox.Show(employeeName[q];
}
}
}
}
DoWorkEventHandler 具有以下定义:
public delegate void DoWorkEventHandler(
Object sender,
DoWorkEventArgs e
)
您不能添加第三个参数。你要获取的对象在DoWorkEventArgs.Argument
属性.
public partial class Form1 : Form1
{
public static string[] employeeName;
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1WorkerSupportsCancellation = true;
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
}
private void btn1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(employeeName);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
string[] employeeName = (string[])e.Argument;
//Just for example sake
for (int q = employeeName.GetLowerBound(0); q <= employeeName.GetUpperBound(0); q++)
{
MessageBox.Show(employeeName[q];
}
}
}