好的,所以我在项目中使用这一行代码

System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ProcessReport));


但它引发以下错误


  “ ProcessReport”的重载不匹配委托“ System.Threading.WaitCallback”


我将上述行替换为以下行:

Thread t = new Thread(new ThreadStart(ProcessReport));
t.Start();


这消除了错误,但这是正确的方法。我不能在那里查看输出,因为我是一家公司的实习生,这是整个大型项目的一部分。请帮忙。

我不能发布整个ProcessReport,因为我不允许这样做,但是它以以下内容开头:


  
    公共无效ProcessReport()

最佳答案

我的假设是,既然这样编译:

new ThreadStart(ProcessReport)


您的ProcessReport方法看起来像这样:

void ProcessReport()
{
}


QueueUserWorkItem需要一个WaitCallback委托,该委托需要传递一个对象作为参数。因此,将方法的签名更改为如下所示:

void ProcessReport(object state)
{
}


而且你应该没事。如果您不需要使用state参数,则可以忽略它,但是它的值是您作为QueueUserWorkItem的第二个参数传入的值。由于使用的重载不会将对象传递给QueueUserWorkItem,因此它将始终为null。

关于c# - C#中的线程错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11418922/

10-11 01:00