【问题标题】:C#: No overload for 'function' matches delegate System.Threading.WaitCallBackC#:“函数”没有重载匹配委托 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
}

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

【问题讨论】:

    标签: c# multithreading delegates overloading threadpool


    【解决方案1】:

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

    public delegate void WaitCallback(object state);
    

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

    void Generic_Function(object state)
    {
        //Code here
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多