0

我正在使用这样的线程池启动一个线程:

    ThreadPool.QueueUserWorkItem(new WaitCallback(outp), (object)new object[] { output});

输出是一个队列。

这是调用函数:

    private void outp(object obj)
    {
        object[] arg = obj as object[];
        Queue<String> output = arg[0];
    }

问题:arg[0] 无法转换为队列。如何正确地将队列提交到线程池?

4

1 回答 1

0

传递队列,而不是数组:

ThreadPool.QueueUserWorkItem(new WaitCallback(outp), output);

使用队列:

private void outp(object obj)
{
    Queue<string> output = obj as Queue<string>;
    // use queue here
}

顺便说一句,您不需要显式创建回调委托。只需传递方法:

ThreadPool.QueueUserWorkItem(outp, output);

如果多个线程同时访问您的队列,还可以考虑使用ConcurrentQueue 。

于 2013-04-23T09:06:27.633 回答