BackgroundWorker用匿名方法?

Moh*_*yan 27 .net c# anonymous-methods backgroundworker

我将使用匿名方法创建BackgroundWorker.
我写了以下代码:

BackgroundWorker bgw = new BackgroundWorker();
bgw.DoWork += new DoWorkEventHandler(
    () =>
    {
        int i = 0;
        foreach (var item in query2)
        {
            ....
            ....
        }
    }
);
Run Code Online (Sandbox Code Playgroud)


但是委托'System.ComponentModel.DoWorkEventHandler'不接受'0'参数,我必须将两个对象传递给匿名方法:object sender,DoWorkEventArgs e

你能指导我,我怎么做?谢谢.

Lee*_*Lee 54

您只需要向匿名函数添加参数:

bgw.DoWork += (sender, e) => { ... }
Run Code Online (Sandbox Code Playgroud)

或者,如果您不关心参数,您可以:

bgw.DoWork += delegate { ... }
Run Code Online (Sandbox Code Playgroud)


Ken*_*art 32

如果指定lambda,则必须确保它具有相同数量的参数:

bgw.DoWork += (s, e) => ...;
Run Code Online (Sandbox Code Playgroud)

但是如果你没有使用参数,你可以使用没有参数的匿名委托:

bgw.DoWork += delegate
{
    ...
};
Run Code Online (Sandbox Code Playgroud)