【发布时间】:2018-10-04 15:30:09
【问题描述】:
我见过一些 C# 方法,例如 ThreadPool.QueueUserWorkItem(WaitCallback, Object),它们采用一个方法(在本例中为“WaitCallback”),但没有提供直接将参数传递给该方法的选项,而是采用单独的 Object可以供应他们。
所以你不能做类似被问到here的事情。
我的问题是:为什么?
使用这种方法必须有技术原因,并且不允许类似
ThreadPool.QueueUserWorkItem(new WaitCallback(Multiply(2, 3)));
private int Multiply(int x,int y)
{
int z=(x*y);
return z;
}
【问题讨论】:
-
new WaitCallback(Multiply(2, 3))将直接运行Multiply(2,3)并将结果作为参数提供给 WaitCallback。这不是您想要的 - 您需要发送参数和方法以分别调用,以便可以在另一个线程上调用它。