我编写了一段小代码,将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
的原因。也许我在“ =>”周围的分配语法很烂。
不管怎样,我欢迎任何有效的方法来完成这项工作
最佳答案
public BackgroundWorker GetBackgroundWorker(System.Action doWork)
{
BackgroundWorker bwk= new BackgroundWorker();
bwk.DoWork += (sender, args) => { doWork(); };
return bw;
}
将doWork分配给args.Result将不会调用DoWork方法。
附带说明:方法和变量的命名表明您不完全了解委托,事件和lambda表达式。
关于c# - 将System.Action分配给BackgroundWorker,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8666592/