我写了一小段代码,将Action
作为代表分配给BackGroundWorker
。
public BackgroundWorker GetBackgroundWorker(System.Action doWork)
{
BackgroundWorker bwk= new BackgroundWorker();
bwk.DoWork += (sender, args) => { args.Result = doWork; };
return bwk;
}
BackgroundWorker wk = GetBackgroundWorker(MY_Delegate);
wk.RunWorkerAsync();
public void MY_Delegate()
{
//DO Stuff
}
总而言之,我想知道为什么在我通过MY_Delegate
电话解雇员工之后,从未输入方法RunWorkerAsync
。
也许我的约束语法围绕“=>”吮吸。
ANyway,我欢迎任何有效的方式来完成这项工作
答案 0 :(得分:5)
public BackgroundWorker GetBackgroundWorker(System.Action doWork)
{
BackgroundWorker bwk= new BackgroundWorker();
bwk.DoWork += (sender, args) => { doWork(); };
return bw;
}
将doWork分配给args.Result不会调用DoWork方法。
作为旁注:方法和变量的命名表明您不完全理解委托,事件和lambda表达式。