gpt4 book ai didi

c# - C#中的线程错误

转载 作者:太空宇宙 更新时间:2023-11-03 19:22:13 27 4
gpt4 key购买 nike

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

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

但它抛出以下错误

No overload for the "ProcessReport" matches delegate “System.Threading.WaitCallback

我将上面提到的行替换为以下行:

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

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

我不能发布整个 ProcessReport,因为我不被允许,但它是从这个开始的:

public void ProcessReport()

最佳答案

我的假设是,因为这个编译:

new ThreadStart(ProcessReport)

您的 ProcessReport 方法如下所示:

void ProcessReport()
{
}

QueueUserWorkItem 采用 WaitCallback 委托(delegate),这需要将单个对象作为参数传递。因此,将方法的签名更改为如下所示:

void ProcessReport(object state)
{
}

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

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com