gpt4 book ai didi

c# - 将 System.Action 分配给 BackgroundWorker

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:56 24 4
gpt4 key购买 nike

我写了一小段代码,将 Action 作为 Delegate 分配给 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
}

长话短说,我想知道为什么在我用 RunWorkerAsync 调用解雇工作人员后从未输入方法 MY_Delegate
也许我围绕“=>”的赋值语法很糟糕。
无论如何,我欢迎任何有效的方法来完成这项工作

最佳答案

public BackgroundWorker GetBackgroundWorker(System.Action doWork)
{
BackgroundWorker bwk= new BackgroundWorker();
bwk.DoWork += (sender, args) => { doWork(); };
return bw;
}

将 doWork 赋值给 args.Result 不会调用 DoWork 方法。

附带说明:方法和变量的命名表明您没有完全理解委托(delegate)、事件和 lambda 表达式。

关于c# - 将 System.Action 分配给 BackgroundWorker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8666592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com