C#:“函数”没有重载匹配委托 System.Threading.WaitCallBack

Posted

技术标签:

【中文标题】C#:“函数”没有重载匹配委托 System.Threading.WaitCallBack【英文标题】:C#: No overload for 'function' matches delegate System.Threading.WaitCallBack 【发布时间】:2019-03-24 21:29:46 【问题描述】:

所以我最近一直在使用线程,错误(C#:'Generic_Function' 没有重载与委托 System.Threading.WaitCallBack 匹配)让我有点困惑。

起初我认为必须传递一个参数,然后我了解到它很容易为空。

ThreadPool.QueueUserWorkItem(new WaitCallback(Generic_Function), null);

不应将函数定义为:

void Generic_Function()
 //Code here

但是,我遇到了一个错误。我在这里遗漏了一些东西,我很困惑。我试过阅读文档,但我想我没有完全理解这一点。如果有人可以解释,我将不胜感激。非常感谢!

【问题讨论】:

【参考方案1】:

根据documentation,WaitCallback 是这样定义的:

public delegate void WaitCallback(object state);

因此,如果您希望代码正常工作,您可以进行此修改:

void Generic_Function(object state)

    //Code here

【讨论】:

【参考方案2】:

如果由于某些原因您无法更改 Generic_Function 签名,您可以使用 lambda 封装调用:

ThreadPool.QueueUserWorkItem(_ => Generic_Function());

【讨论】:

以上是关于C#:“函数”没有重载匹配委托 System.Threading.WaitCallBack的主要内容,如果未能解决你的问题,请参考以下文章

c#委托中另外一种用法

'mysql'没有重载匹配委托'ElapsedEventHandler'。 Windows服务C#

C#委托和事件详解

C#事件与委托详解

C#事件与委托详解精华 多看看

没有重载函数“AfxBeginThread”的实例与参数列表匹配