ThreadPool.QueueUserWorkItem带有函数参数

Tho*_*mas 16 c#

我正在使用C#2.0并希望在帮助下调用带有几个参数的方法ThreadPool.QueueUserWorkItem,所以我尝试如下:

ThreadPool.QueueUserWorkItem(new WaitCallback(Multiply(2, 3)));

private int Multiply(int x,int y)
{
  int z=(x*y);
  return z;
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误.所以请指导我,如何用多个参数调用函数ThreadPool.QueueUserWorkItem

我有另一个查询,当我使用时,ThreadPool.QueueUserWorkItem如何在这里使用匿名函数作为结果我可以在那里编写代码而不是调用另一个函数.如果可以在C#v2.0中使用,请引导我使用代码.

Sve*_*hev 35

您应该声明一个与WaitCallback委托具有相同定义的方法.您可以使用以下代码段:

ThreadPool.QueueUserWorkItem(Multiply, new object[] { 2, 3 }); 

public static void Multiply(object state)
{
    object[] array = state as object[];
    int x = Convert.ToInt32(array[0]);
    int y = Convert.ToInt32(array[1]);
}
Run Code Online (Sandbox Code Playgroud)

匿名代表版本是:

 ThreadPool.QueueUserWorkItem(delegate(object state)
    {
        object[] array = state as object[];
        int x = Convert.ToInt32(array[0]);
        int y = Convert.ToInt32(array[1]);
    }
    , new object[] { 2, 3 });
Run Code Online (Sandbox Code Playgroud)


cla*_*dio 16

使用lambda表达式也可以

ThreadPool.QueueUserWorkItem(state => Multiply(2,3));
Run Code Online (Sandbox Code Playgroud)