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(){} が機能しない理由を誰か教えてください。