我的方法包含参数BlockingCollection<T>
队列,而T必须扩展我的类QueueItem(没有通用就可以正常工作)。
private void ProcessQueue<T>(BlockingCollection<T> queue) where T: QueueItem
{
QueueItem frame;
while (true)
{
if (queue.TryTake(out frame, -1))
{
frame.execute();
}
}
}
if (queue.TryTake(out frame, -1))
上的编译错误:“该方法有一些无效的参数
为什么?
编辑方法定义是:
BlockingCollection<T> TryTake(T, Int32)
答案 0 :(得分:4)
frame
应该是T
,但您提供的是QueueItem
。更改frame
的类型:
T frame;
while (true)
{
if (queue.TryTake(out frame, -1))
{
frame.execute();
}
}