我不能在c#中使队列同步

本文关键字:队列 同步 不能 | 更新日期: 2023-09-27 18:01:30

我正在使用unity3d用c#创建一款游戏。这有点像"交通狂热"。我需要让排队的汽车进入队列,让它们在过马路时离开队列。当我排队时,它工作得很好。但是当我去队列的时候,我有这个异常:

"InvalidOperationException:由于对象的当前状态,操作无效"

下面是我的队列代码:

public Queue UD_queue;
public int score;
void Awake(){
    InitQueues();
        score = 0;
}

public void InitQueues(){
    DU_queue = new Queue();
    Debug.Log("queue initialized");
}
private Queue syncQ(Queue q){
    Queue sync_q = Queue.Synchronized(q);
    return sync_q;
}
public void DoEnqueue(GameObject go){
    lock(DU_queue)
        DU_queue.Enqueue(go);
}
public void DoDequeue(){
    lock(DU_queue)
        DU_queue.Dequeue();
        score +=500;
}

在其他类中,我调用DoEnqueue()和DoDequeue()方法

谁能告诉我为什么锁(){}不起作用?

我不能在c#中使队列同步

如何使用ConcurrentQueue。你不需要再在上面使用任何锁了