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 に答える