Определение «УРОЖАЯ»
Используется в блоке итератора для предоставления значения объекту перечислителя или для оповещения об окончании итерации.
У меня есть отличная запись о неправильном чтении синтаксических операторов, но я думаю, это означает, что он должен быть в блоке итератора, а тот, который вы написали, - нет.
Возможно, измените код на;
foreeach (MessageQueItem item In GetNextQuedItem()
{
if (_messageQueue.Count > 0)
{
yield return _messageQueue.Dequeue();
} else {
yield break;
}
}