好的,所以我在项目中使用这一行代码
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/