在线程池中提交一个队列

本文关键字:一个 队列 线程 提交 | 更新日期: 2023-09-27 18:10:22

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

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

输出是一个Queue。

这是被调用的函数:

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

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

在线程池中提交一个队列

传递queue,而不是array:

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

使用队列:

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

顺便说一句,你不需要显式地创建回调委托。Just pass method:

ThreadPool.QueueUserWorkItem(outp, output);

如果多个线程同时访问你的队列,也考虑使用ConcurrentQueue。