在线程池中提交一个队列
本文关键字:一个 队列 线程 提交 | 更新日期: 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。