0

我正在使用 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()

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

4

1 回答 1

1

如何使用ConcurrentQueue。您不再需要使用任何锁。

于 2013-02-27T02:17:19.747 回答