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