Я использую Lock для доступа к очереди, но один из случаев, кажется, никогда не выполняет блок кода внутри блокировки. У меня есть один поток, который будет выполнять следующий код каждые несколько секунд
lock(queueLock){
while(queue.Count > 0){
doSomething(queue.Dequeue());
}
}
И еще один поток, который будет выполнять следующий код в зависимости от ввода-вывода (не определяется временным интервалом):
lock(queueLock){
queue.Enqueue(input);
}
Этот второй никогда не добивается выполнения кода внутри блокировки.Я уже пытался использовать отладчик или распечатки, но кажется, что он работает, и в окне потоков отладчика VS выглядит так, что поток только что умер после попытки получить блокировку, в то время как никакой другой поток даже не использовал эту очередь.
Я не использую .net Я программирую на Unity, но в этом случае я не использую ничего конкретного Unity, кроме функции обновления.