我正在使用如下的线程池启动一个线程:
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]转换为队列。如何将队列正确地命名为线程池?
答案 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。