好的,我在项目中使用这行代码
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ProcessReport));
但是它会抛出以下错误
“ProcessReport”没有重载与委托“System.Threading.WaitCallback
匹配
我用以下几行替换上面提到的行:
Thread t = new Thread(new ThreadStart(ProcessReport));
t.Start();
这删除了错误,但这是正确的方法。我无法检查输出,因为我是公司的实习生,这是整个大项目的一部分。请帮忙。
我不能发布整个ProcessReport,因为我不被允许,但它从这开始:
public void ProcessReport()
答案 0 :(得分:6)
我的假设是,因为这编译:
new ThreadStart(ProcessReport)
您的ProcessReport
方法如下所示:
void ProcessReport()
{
}
QueueUserWorkItem
需要WaitCallback
委托,这需要传递一个对象作为参数。因此,将方法的签名更改为:
void ProcessReport(object state)
{
}
你应该没问题。如果您不需要使用它,则可以忽略state
参数,但它的值是您作为QueueUserWorkItem
的第二个参数传入的任何值。由于您使用的是不将对象传递给QueueUserWorkItem
的重载,因此它始终为null。
答案 1 :(得分:0)
可能出现的问题之一
线程t =新线程(新的ThreadStart(ProcessReport));
t.Start();
如果你以这种方式启动这么多线程而不检查任何条件,那么在某些情况下你的程序可能会崩溃甚至系统崩溃。但是,如果它是一个应用程序,在该线程启动之前必须发生事件,那么您的代码应该没问题。