在线程池中提交队列

时间:2013-04-23 09:02:38

标签: c# threadpool

我正在使用如下的线程池启动一个线程:

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

输出是一个队列。

这是caled函数:

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

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

1 个答案:

答案 0 :(得分: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